我正在使用以下代码上传文件。文件上传没有错误,但是当我打开一个扩展名为.docx的文件时,M $表示该文件已损坏。然而,它能够修复文件然后打开。我想解决这个问题,以便正确打开文档。
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string fileName = @"C:\" + Guid.NewGuid().ToString() + strExtension;
using (FileStream fs = new FileStream(fileName, FileMode.CreateNew))
{
byte[] bytes = new byte[16 * 1024];
int bytesRead;
while ((bytesRead = context.Request.InputStream.Read(bytes, 0, bytes.Length)) > 0)
{
fs.Write(bytes, 0, bytesRead);
}
}
感谢。
编辑:
使用以下代码正确保存文件:
while ((bytesRead = context.Request.Files[0].InputStream.Read(bytes, 0, bytes.Length)) > 0)
还可以使用context.Request.Files[0].SaveAs(...);
答案 0 :(得分:3)
看起来你正在阅读HttpRequest.InputStream。最好的办法是检查HttpRequest.Files集合。
(或者更简单,使用FileUpload服务器控件)。
您的代码正在将原始输入(很可能是多部分)复制到文件中。
答案 1 :(得分:1)
这不能完全回答您的问题,但您可以使用HttpPostedFile.SaveAs将内容保存到所需的路径。
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string fileName = @"C:\" + Guid.NewGuid().ToString() + strExtension;
context.Request.Files[0].SaveAs(fileName); // i'll ignore the violation of the law of demeter ;)