2017-07-07 87 views
0

我有下面的类:从数据库下载的文件是“只读”(不能修改)

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

我用这个方法上传.docx文件到服务器:

 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); 
    } 

而且使用此转换文件为Base64:

 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); 
    } 

在服务器端,base64数据被转换为byte[]和s在一张桌子上。

后来,我用下面的方法来下载它(在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(); 
     } 
    } 

这里是我的问题:
下载的所有文件都只读的,但我想修改并保存下载的文件。

有什么建议吗?

+0

请用清晰的英文详细说明您的问题陈述。如果可能的话,举个例子。 – Zeeshan

+0

好的。当我尝试从数据库下载数据并将其保存在光盘上时,文件只能读取。我需要更改以修改该文件? – Newer

回答

0

好的,我发现问题在哪里。所有的时间,我尝试保存C:/下载文件。 当我将它保存在另一个位置时,一切都正常。