感谢您阅读我的帖子。我已经编写了一段HttpResponse代码来下载文件。遵循以下代码:
string fullPath = Path.Combine(appPath, randomFileName);
File.WriteAllBytes(fullPath, data);
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.BufferOutput = true;
response.Cache.SetCacheability(HttpCacheability.Private);
response.CacheControl = "private";
response.AddHeader("Content-Type", "binary/octet-stream");
response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";");
response.AddHeader("Content-Length", data.Length.ToString((IFormatProvider)CultureInfo.InvariantCulture));
response.Flush();
response.BinaryWrite(data);
response.Flush();
response.End();在这里,File.WriteAllBytes方法在服务器中创建一个文件,这是一个xlsx文件。在notepad++中打开此文件时,该文件有1506791个字符。在notepad++中打开下载的xlsx文件时,该文件有1490407个字符。
下载的文件无法在Microsoft Excel中打开。我使用notepad++查看是否下载了所有字节。显然,并不是所有字节都被下载。
HttpResponse没有下载所有字节。
有没有可能data.Length方法不计算unicode字符,并且当执行response.BinaryWrite时,binarywrite计算并在data.Length值达到非字节结尾时停止。
发布于 2017-11-10 07:28:27
这种方法使用您在将相同的数据发送回客户端之前保存的文件(让我知道它是如何进行的):
string fullPath = Path.Combine(appPath, randomFileName);
File.WriteAllBytes(fullPath, data);
HttpResponse response = HttpContext.Current.Response;
response.ClearContent();
response.ClearHeaders();
response.AddHeader("Content-Disposition", "inline; filename=" + randomFileName);
response.ContentType = "binary/octet-stream";
response.WriteFile(fullPath);https://stackoverflow.com/questions/47211573
复制相似问题