首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Okhttp大文件上传失败

Okhttp大文件上传失败
EN

Stack Overflow用户
提问于 2018-04-14 09:40:11
回答 1查看 591关注 0票数 3

我遇到了Okhttp + Node.js强大的服务器端大文件上传的问题。目前,上传适用于小于100Mb的文件,但无法上传较大的文件。对于较大的文件,onprogress事件服务器端被激发,直到99%的进度,无论文件大小如何,然后它停止,报告请求中止,并且onfile事件不被激发。

已经尝试了超时解决方法,甚至定义了一个自定义SocketFactory来手动设置套接字保持连接和sotimeout。

所以,我被困在这里了。任何帮助都将不胜感激。

代码语言:javascript
复制
CustomSocketFactory MySocketFactory = new CustomSocketFactory();

OkHttpClient client = new OkHttpClient.Builder()
        .socketFactory(MySocketFactory)
        .readTimeout(largenumber, TimeUnit.SECONDS)
        .writeTimeout(largenumber, TimeUnit.SECONDS)
        .connectTimeout(largenumber, TimeUnit.SECONDS)

        .build();

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("nombre_file", file_pais.getName())
        .addFormDataPart("nombre_pais", pais.getName())
        .addFormDataPart("file", file_pais.getName(),
                RequestBody.create(MediaType.parse("application/octet-stream"),
                        new File(filepath)
        .build();

Request request = new Request.Builder()
        .url(server_url)
        .post(requestBody)
        .build();

Call call = client.newCall(request);

Response response = call.execute();
response.body().close();
EN

回答 1

Stack Overflow用户

发布于 2020-05-11 05:49:25

使用snoopy api的方法太简单了:如果排除标识符定义,则只有一行代码:)

代码语言:javascript
复制
URI uri = ...;
Path fileToUpload = ...;
Snoopy.builder()
      .config(SnoopyConfig.defaults())
      .build()
      .post(uri)
      .followRedirects(true)
      .failIfNotSuccessfulResponse(true)
      .body(fileToUpload)
      .consumeAsString();

https://bitbucket.org/abuwandi/snoopy

在大型文件上进行了测试,效果很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49827065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档