我想使用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. 从网站下载txt文件android
- 2. 从网站下载音频文件
- 3. 从网站自动下载XLS文件
- 4. 如何从C#网站下载文件?
- 5. C#从网站下载.swf文件
- 6. 从网站下载CSV文件
- 7. 从多语言网站下载文件
- 8. 从网站下载文件PHP
- 9. SILVERLIGHT。如何从网站下载文件
- 10. 从网站下载所有PDF文件
- 11. 使用python从网站下载文件
- 12. 如何从服务器下载文件,使用asp.net网站
- 13. 从下载网站
- 14. 从网站上的链接下载网站上的jar文件
- 15. Silverlight 5 - 从WebService下载zip文件asmx
- 16. 下载的所有文件在网站
- 17. 如何在ASP.NET中的网站上下载CSV文件
- 18. 在asp.net网站中实际保存WebService文件的位置?
- 19. 使用webService下载文件
- 20. 在ASP.net网站上提供下载
- 21. 从网站下载.pdf文件。文件损坏
- 22. 从网站下载PDF文档
- 23. 我如何从网站下载文章?
- 24. 下载数据从网站
- 25. 从Azure下载网站
- 26. 从网站下载图片
- 27. 从网站/网页下载/保存文件
- 28. Asp.Net网站与“未知网络错误”下载连接下载
- 29. 登录网站并下载文件?
- 30. Axapta 2009 X ++从网站下载文本文件
什么你用这种方法遇到的问题是什么?你没有提出问题,所以这可能会很快关闭。 – Oded 2010-02-10 19:18:30