ASMX文件上傳
回答
當開發我的免費工具上傳大文件到服務器時,我也使用.NET 2.0和Web服務。
爲了讓應用程序對於非常大的文件更容錯,我決定不上傳一個大的byte[]
數組,而是做一個「chuncked」上傳。
I.e.爲了上傳一個1 MB的文件,我確實會調用我的上傳SOAP函數20次,每次調用都會傳遞一個50 KB的byte[]
數組,並再次將它在服務器上重新組合在一起。
我也計算了軟件包,當掉落的時候,我嘗試再次上傳幾次。
這使得上傳更容錯並且在用戶界面中更具響應性。
如果您有興趣,this is a CP article of the tool。
肯定的:
[WebMethod]
public void Upload(byte[] contents, string filename)
{
var appData = Server.MapPath("~/App_Data");
var file = Path.Combine(appData, Path.GetFileName(filename));
File.WriteAllBytes(file, contents);
}
然後公開服務,從WSDL中生成一個客戶端代理,調用,標準的東西。
-
UPDATE:
我現在看到你更新有關處理大型文件。內置於WCF中的MTOM protocol with streaming針對處理這種情況進行了優化。
對於非常大的文件,將它們發送到Web服務的唯一有效方法是使用MTOM。而MTOM只有supported in WCF,你已經排除了。用老式的.asmx網絡服務做到這一點的唯一方法就是@Darin Dimitrov給出的答案。通過這種解決方案,您將不得不承擔基於base64編碼的文件的成本(帶寬增加33%)。
我們有相同的要求,基本上通過HTTP POST使用客戶端的標準FileUpload
控件上傳文件。 最後,我們剛剛爲ASMX Web服務項目添加了一個ASPX頁面(畢竟它只是一個Web項目) - 這使我們能夠在網絡服務爲http://foo/bar/baz.asmx
時上傳到http://foo/bar/Upload.aspx
。這保留了Web服務中的功能,即使它使用了單獨的網頁。
這可能會或可能不符合您的要求,@達林方法也可以作爲一種解決方法,但您必須在客戶端進行修改,因爲這不是我們的選擇。
- 1. 使用ASMX文件從iPhone上傳圖像
- 2. 如何開發Web服務(ASMX)上傳文件狀態
- 3. asmx Web服務無法返回JSON與FineUploader文件上傳
- 4. PhoneGap的文件上傳到ASMX Web服務
- 5. 張貼在jQuery的AJAX一個文件保存到ASMX上傳文件
- 6. ASMX文件下載
- 7. Valums文件上傳 - 多文件上傳
- 8. Rails文件上傳:上傳文件夾
- 9. asp.net中的asmx文件
- 10. 無法加載asmx文件?
- 11. Visual Studio 2008 ASMX文件
- 12. Asmx文件不返回XML
- 13. 清除文件上傳後在valums上傳ajax文件上傳
- 14. 使用blueimp上傳文件上傳東西blueimp文件上傳
- 15. 上傳文件
- 16. 上傳文件
- 17. 上傳文件
- 18. 上傳文件
- 19. 上傳文件
- 20. 文件上傳
- 21. 上傳文件
- 22. 上傳文件
- 23. 上傳文件
- 24. 上傳文件
- 25. 文件上傳
- 26. 上傳文件。
- 27. 上傳文件
- 28. 文件上傳
- 29. 文件上傳
- 30. 上傳文件
buffer ???我想你的意思是...... – scartag 2011-01-25 22:19:34
大文件呢? – 2xMax 2011-01-25 22:19:58