java - 将文件发送到 Http 时出现 OutputStream 内存不足错误

标签 java android android-file

较小的文件成功上传到服务器,但当涉及较大的文件时,下面的代码会抛出内存不足错误。任何解决方案?? .提前致谢。

public void addFilePart(String fieldName, File uploadFile)
                throws IOException {
            String fileName = uploadFile.getName();
            writer.append("--" + boundary).append(LINE_FEED);
            writer.append(
                    "Content-Disposition: form-data; name=\"" + fieldName
                            + "\"; filename=\"" + fileName + "\"")
                    .append(LINE_FEED);
            writer.append(
                    "Content-Type: "
                            + URLConnection.guessContentTypeFromName(fileName))
                    .append(LINE_FEED);
            writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
            writer.append(LINE_FEED);
            writer.flush();

            FileInputStream inputStream = new FileInputStream(uploadFile);
            byte[] buffer = new byte[4096];
            int bytesRead = -1;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.flush();
            inputStream.close();

            writer.append(LINE_FEED);
            writer.flush();
        }

最佳答案

使用 chunchedStreamingMode 它将帮助您以特定大小分块数据。

con.setChunkedStreamingMode(1024);

这个链接可以帮到你 Upload large file in Android without outofmemory error

关于java - 将文件发送到 Http 时出现 OutputStream 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117585/

相关文章:

java - Selenium WebDriver 不会点击 Google 模拟器中的按钮

android - 如何在 Android 中实现分段列表?

android - FileNotFoundException :/storage/sdcard0/Myfile. txt:打开失败:EACCES(权限被拒绝)

android - 在 Nougat 上使用 Scoped Directory Access 捕获图像

java - Android ASyncTask 在主线程中使用下载的对象

java - 安卓 : Issue in creating pie chart in a fragment

android - 构建器中的扩展 (android.app.notification.extender) 无法应用于 (android.support.v4.app.notificationcompat.wearableextender)

android - 如何创建文件夹(Android R - Api 30)?

java - 防止java应用程序被逆向工程的解决方案——可能是某种形式的加密

android - Android 中两个不同应用程序之间的共享元素转换?