如何将文件转换为字节和字节到mvc4中的文件

时间:2015-02-12 13:46:39

标签: asp.net-mvc-4

我正在使用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);

请帮我解决这个问题。

提前致谢。

1 个答案:

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

它可以帮助你...