【问题标题】:retrofit Android upload video改造安卓上传视频
【发布时间】:2014-06-23 10:20:50
【问题描述】:

我正在使用 Retrofit 将图像上传到我的服务器 上传工作正常 但是当图像大小有点大时,它会引发异常

java.net.SocketException: sendto failed: EPIPE (Broken pipe)

这是我的代码

public interface RestClient {
@Multipart
@POST("/upload2.php")
Response uploadUserIds(@Part("photo") TypedFile photo);
 }

RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint(UploadFiles.SERVER_URL)
        .setLogLevel(RestAdapter.LogLevel.BASIC)
        .setLog(new RestAdapter.Log() {
            @Override
            public void log(String msg) {
                Log.i(TAG, msg);
            }
        })
        .build();

RestClient service = restAdapter.create(RestClient.class);

//我的电话

Response tr = service.uploadUserIds(new TypedFile(typeFile, f));

【问题讨论】:

    标签: php android retrofit


    【解决方案1】:

    这不一定是客户端的问题。我坚信文件大小超过服务器允许的 maxUpload Size。

    【讨论】:

      【解决方案2】:

      我也遇到过这个问题。我在模拟器上的 Android 客户端中使用 Retrofit,并尝试将(相当小的)测试视频文件上传到在我的 Windows PC 上的 Eclipse 中运行的服务器代码。我使用以下方法设置 Retrofit 以进行完整日志记录:

      RestAdapter restAdapter = new RestAdapter.Builder()
              .setEndpoint("http://10.0.2.2:8080")
              .setLogLevel(LogLevel.FULL)
              .build();
      

      这在尝试上传某些文件时始终导致上述错误。 但是,当我使用 setLogLevel(LogLevel.BASIC) 将日志级别设置为基本时,所有这些文件都开始正常上传。

      所以我怀疑这可能是某种内部改造错误,可能与缓冲区溢出有关。我不认为这是服务器问题。

      【讨论】:

        【解决方案3】:

        这可能是服务器端的问题。脚本可能会卡在代码中的某个地方,因此不会发布响应,同时服务器会关闭套接字。可能有两种解决方案:

        1. 解决服务器端脚本中的问题

        第二个不是最好的:

        1. 在客户端将超时值增加到一个很大的数字!!

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-13
          • 2023-03-13
          • 2014-10-18
          • 2016-02-14
          • 2016-12-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多