我想使用web服务从网站推送文件到浏览器。我目前正在将该文件读入一个base64字节数组,并从web服务返回。这个webservice从一个网站被调用,并且我被困在如何将这个原始文件推送到浏览器中。理想情况下,我希望将字节数组读入内存流,然后在可能的情况下将其写入Response流,以便最终用户下载文件。从webservice下载文件 - 在ASP.NET网站
回答
首先,不是发送一个base64字节数组,而是让您的web服务为您的文件返回一个字节数组。 Response.OutputStream.Write()
会自动base64编码你的字节,所以你不妨将它们在你的内存流中解码。
其次,你需要的不仅仅是字节。您需要与该文件关联的元数据。对于下面的代码片段,我已将所有这些元数据放入一个单独的类(名为“file”的本地实例)中。然后,只要使用这个片段,一旦你有你需要的数据:
Response.Clear();
Response.ClearHeaders();
Response.ContentType = file.ContentType;
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.FileName + "\"");
Response.AddHeader("Content-Length", file.FileSize.ToString());
Response.OutputStream.Write(file.Bytes, 0, file.Bytes.Length);
Response.Flush();
Response.End();
小心与Response.End()http://stackoverflow.com/questions/1087777/is-response-end-considered-harmful – 2010-02-10 19:59:12
@托德史密斯:感谢指针。我意识到这个问题,但你说对方可能不对;这可能是一个严重的问题。然而,在下载文件的情况下,不需要进一步处理,因此'Response.End()'*可能是正确的调用。这当然是在我的情况。 – Randolpho 2010-02-10 20:28:29
我应该使用Response.Close()而不是Repsonse.End()吗? – user210757 2010-02-19 00:14:00
这是可能的,你需要确保你明确设置的HttpResponse的ContentType的,例如:
Response.ContentType = "image/jpeg";
Response.OutputStream.Write(buffer, 0, buffer.Length);
如果你想控制的文件名,你就必须添加内容 - 配置标题。谷歌可以帮助您找到解决问题的正确方法。
+1,但您忽略了Content-Disposition,这对于文件下载来说是最重要的。编辑:然后你添加它。所以忽略这一点。 :) – Randolpho 2010-02-10 19:24:25
它真的取决于您的web服务的接口。即SOAP,REST,ASPX。
您可以尝试的一件事是更改您的响应中的内容类型为“Application/octet-stream”。或者类似的东西告诉接收者MIME类型。
如果您使用WCF休息,您可以使用Stream作为Web服务上的返回类型。
将文件嵌入到Web服务中通常是一个糟糕的主意。你只是增加开销和复杂性而没有真正的好处。
相反,您应该提供一个IHttpHandler来处理文件上传。大多数网络服务器还提供辅助API来简化这一点,例如在ASP.NET中,您可以访问上传文件:
HttpContext.Request.Files [0]
有大量的JavaScript文件上传脚本,可以简化这个客户端上: http://www.phpletter.com/Demo/AjaxFileUpload-Demo/
我实际上是试图将文件下载到客户端,而不是上传到服务器 – user210757 2010-02-19 00:16:34
该链接是垃圾邮件或时间上的丢失。 – mcy 2017-03-03 07:56:21
- 1. 从ASP.NET MVC 2网站下载文件
- 2. 从网站下载文件
- 3. 从网站下载文件
- 4. asp.net网站文件下载历史
- 5. 从网站下载文件解析
- 6. 从网站下载音频文件
- 7. 从网站下载CSV文件
- 8. 从网站下载文件PHP
- 9. 从网站下载临时文件
- 10. 从多语言网站下载文件
- 11. 从网站自动下载XLS文件
- 12. SILVERLIGHT。如何从网站下载文件
- 13. 使用Python从网站下载文件
- 14. 从网站下载某个文件
- 15. 从Arduino网站下载强制文件
- 16. 图书馆从网站下载文件?
- 17. C#从网站下载.swf文件
- 18. 使用python从网站下载文件
- 19. 从多个网站下载文件。
- 20. 从各种网站下载apk文件
- 21. 如何从C#网站下载文件?
- 22. 从网站下载txt文件android
- 23. 如何从网站下载.cs文件?
- 24. 如何从网站下载文件?
- 25. 从网站下载所有PDF文件
- 26. 如何从服务器下载文件,使用asp.net网站
- 27. 授予ASP.NET访问权限以从Sharepoint网站下载文件
- 28. 从下载网站
- 29. 从网站上的链接下载网站上的jar文件
- 30. 从网站下载pdf文件并在下载后更改文件名
什么你用这种方法遇到的问题是什么?你没有提出问题,所以这可能会很快关闭。 – Oded 2010-02-10 19:18:30