我正在使用MVC4。我的要求是:
我必须将文件转换为字节数组并保存到数据库varbinary列。
为此我写了如下代码:
public byte[] Doc { get; set; }
Document.Doc = GetFilesBytes(PostedFile);
public static byte[] GetFilesBytes(HttpPostedFileBase file)
{
MemoryStream target = new MemoryStream();
file.InputStream.CopyTo(target);
return target.ToArray();
}
我使用以下代码下载文件:
public ActionResult Download(int id)
{
List<Document> Documents = new List<Document>();
using (SchedulingServiceInstanceManager facade = new SchedulingServiceInstanceManager("SchedulingServiceWsHttpEndPoint"))
{
Document Document = new Document();
Document.DMLType = Constant.DMLTYPE_SELECT;
Documents = facade.GetDocuments(Document);
}
var file = Documents.FirstOrDefault(f => f.DocumentID == id);
return File(file.Doc.ToArray(), "application/octet-stream", file.Name);
}
当我下载pdf文件时,它显示的消息为“打开此文档时出错。文件已损坏且无法修复。”
我还需要做什么?
我尝试使用以下代码,但没有运气
return File(file.Doc.ToArray(), "application/pdf", file.Name);
请帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
请尝试使用控制器中的以下代码
FileStream stream = File.OpenRead(@"c:\path\to\your\file\here.txt");
byte[] fileBytes= new byte[stream.Length];
stream.Read(fileBytes, 0, fileBytes.Length);
stream.Close();
//Begins the process of writing the byte array back to a file
using (Stream file = File.OpenWrite(@"c:\path\to\your\file\here.txt"))
{
file.Write(fileBytes, 0, fileBytes.Length);
}
它可以帮助你...