从数据库下载的文件是'Read-Only'(不能修改)
A file downloaded from DB is 'Read-Only' (cannot modify)
我有一个关注Class:
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[]
并保存在 table 中。
之后,我用下面的方法下载(在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();
}
}
这是我的问题:
所有下载的文件都是只读,但我想修改并保存下载的文件。
有什么建议吗?
好的,我找到问题出在哪里了。我一直尝试将下载的文件保存在 C:/ 中。
当我将它保存在另一个位置时,一切正常。
我有一个关注Class:
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[]
并保存在 table 中。
之后,我用下面的方法下载(在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();
}
}
这是我的问题:
所有下载的文件都是只读,但我想修改并保存下载的文件。
有什么建议吗?
好的,我找到问题出在哪里了。我一直尝试将下载的文件保存在 C:/ 中。 当我将它保存在另一个位置时,一切正常。