Android 发送文件>;1MB使用HTTP POST

Android 发送文件>;1MB使用HTTP POST,android,http-post,large-file-upload,Android,Http Post,Large File Upload,我正在将视频和音频文件从我的Android应用程序发送到Wampserver,其中一些文件可能会变得相当大,当文件大小大约超过1MB时,我往往会遇到OutofMemory问题 我将每个文件分别转换为一个字节流。我认为字节流太大,因此OutofMemory 如何阻止此错误的发生?请看以下示例: 当您有大文件或大图像/高质量图像等大数据要发送到服务器时,您可以将其分块发送 首先与服务器建立Http连接,然后使用DataOutputStream类发送数据块。同样,在服务器端,您需要实现接收这些区块的代

我正在将视频和音频文件从我的Android应用程序发送到
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);
}