Android 发送文件>;1MB使用HTTP POST
我正在将视频和音频文件从我的Android应用程序发送到Android 发送文件>;1MB使用HTTP POST,android,http-post,large-file-upload,Android,Http Post,Large File Upload,我正在将视频和音频文件从我的Android应用程序发送到Wampserver,其中一些文件可能会变得相当大,当文件大小大约超过1MB时,我往往会遇到OutofMemory问题 我将每个文件分别转换为一个字节流。我认为字节流太大,因此OutofMemory 如何阻止此错误的发生?请看以下示例: 当您有大文件或大图像/高质量图像等大数据要发送到服务器时,您可以将其分块发送 首先与服务器建立Http连接,然后使用DataOutputStream类发送数据块。同样,在服务器端,您需要实现接收这些区块的代
Wampserver
,其中一些文件可能会变得相当大,当文件大小大约超过1MB
时,我往往会遇到OutofMemory
问题
我将每个文件分别转换为一个字节流。我认为字节流太大,因此OutofMemory
如何阻止此错误的发生?请看以下示例:
当您有大文件或大图像/高质量图像等大数据要发送到服务器时,您可以将其分块发送
首先与服务器建立Http连接,然后使用
DataOutputStream
类发送数据块。同样,在服务器端,您需要实现接收这些区块的代码,并在获得所有区块后将其放在一个文件中。使用此处建议的链接Maxium:
然后我找到了这个来修复错误
替换:
while (bytesRead > 0)
{
outputStream.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
与:
该代码是否将文件拆分为多个部分或其他内容?虽然我不认为这是那种问题。我将每个文件分别转换为一个字节流。我认为字节流太大了,因此OutofMemory..它给出了连接的OutputStream,并将文件读入流中。outputStream=新的DataOutputStream(connection.getOutputStream();服务器需要在某个地方写入该流。如果您按1024字节读取文件,则所需内存永远不会超过1K。设置maxBufferSize=4096。当您打开文件进行流式处理时,不会将其加载到内存中。如果您显示确实上载的代码片段,将更容易猜测错误所在。这适用于大于1K的文件1MB,但现在我在发送一个超过7MB的文件时遇到了问题。我又遇到了OutOfMemory问题。@Maxim是的,我修复了它。我对你的答案投了赞成票,因为它部分解决了我的问题。谢谢,但我只是好奇它是否对你有用,因为我没有时间编写服务器部件来找出它为什么仍然不起作用。分数没有重要的是,这就是TCP/IP的发明目的
while (bytesRead > 0){
bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte byt[]=new byte[bufferSize];
fileInputStream.read(byt);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
outputStream.write(buffer, 0, bufferSize);
}