我有一堆文件(近1500个,其中一些超过500MB)。基本上,我们有一个缺陷管理系统(Serena Business Mashups,其中一些可能知道它),我需要通过他们的Web服务将这些文件附加到相关问题。可附加的最大文件大小为500mb。因此,我专注于小于500Mb的文件。此Web服务具有CreateAttachment调用,将文件内容作为base64binary类型。我将小文件作为红色文件附加到字节数组中并将该字节数组作为可正常工作的内容传递给我没有问题。但是,当涉及大文件时,我总是会出现异常情况。我已经尝试了很多样本并阅读了大部分文章,但他们没有帮助我...我甚至试图分割文件读取它们并合并数组,或编码字符串......没有成功
我只是想知道你是否有更好的想法来完成这项任务,或者建议我一些最佳实践。
非常感谢您的帮助。
此致
答案 0 :(得分:1)
请指出你在说什么语言?听起来像C#或Java。
如果是Java,您可能希望增加vm的堆大小。
对于Java,您可以使用这样的参数(有更好的方法来解决这个问题,但现在可以解决它):
java -Xms64m -Xmx1024m appname
编辑:作为一般建议,请不要将文件完全加载到内存中。按照您的描述将其拆分,将块输出到套接字并在读取每个块后刷新缓存。只是不要关闭socket / http连接。
答案 1 :(得分:0)
通过普通HTTP上传文件可能不可靠。我建议你研究后台智能传输服务(BITS)。查看http://www.codeproject.com/KB/IP/sharpBITS.aspx?msg=2815376例如如何从客户端使用它。
如果您需要调用Web服务来传递某些属性并处理该文件,则可以在BITS上载完成后执行此操作。
编辑:BITS使用HTTP进行传输,但是在网络出现问题时它支持恢复。显然,BITS只是Windows:)