2017-07-07 3 views
0

J'ai une classe suivante:Un fichier téléchargé à partir de DB est « en lecture seule » (ne peut pas modifier) ​​

public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Data { get; set; } 

je télécharger .docx fichier vers le serveur à l'aide des méthodes suivantes:

 internal void AddDraft(OpenFileDialog openFileDialog, string description) 
    { 
     FileInfo fi = new FileInfo(openFileDialog.FileName); 
     Draft draft = new Draft(); 
     draft.Description = description; 
     draft.Name = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length); 
     draft.Data = getDataFromDraft(openFileDialog); 

     RestRequest request = new RestRequest("api/draft", Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.AddBody(draft); 

     restClient.Execute(request); 
    } 

Et convertir le fichier à l'aide base64 ceci:

 private string getDataFromDraft(OpenFileDialog openFileDialog) 
    { 
     byte[] bytes = null; 

     using (FileStream stream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
     using (BinaryReader br = new BinaryReader(new BufferedStream(stream))) 
     { 
      bytes = br.ReadBytes((Int32)stream.Length); 
     } 

     var tmp = Convert.ToBase64String(bytes); 

     return Convert.ToBase64String(bytes); 
    } 

du côté du serveur, les données base64 est converti en byte[] et s aved dans une table.

Ensuite, j'utilise la méthode suivante pour le télécharger (dans une application WPF)

 internal void SaveDraft(SaveFileDialog saveFileDialog, Draft draft) 
    { 
     byte[] bytes = Convert.FromBase64String(draft.Data); 
     using (FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)) 
     using (BinaryWriter bw = new BinaryWriter(new BufferedStream(fs))) 
     { 
      bw.Write(bytes); 
      bw.Flush(); 
     } 
    } 

Voici mon problème:
Tous les fichiers téléchargés sont en lecture seule, mais j'aimerais pour modifier et enregistrer le fichier téléchargé.

Des suggestions?

+0

Veuillez élaborer votre énoncé de problème en anglais clair. Si possible, donnez un exemple. – Zeeshan

+0

Ok. Quand j'essaye de télécharger des données de la base de données et de l'enregistrer sur le disque, un fichier a seulement accès à lire. Qu'est-ce que j'ai besoin de changer pour modifier ce fichier? – Newer

Répondre

0

Ok, j'ai trouvé où était le problème. Chaque fois que j'essaie d'enregistrer le fichier téléchargé dans C: /. Lorsque je l'enregistrais sur un autre emplacement, tout était OK.