0

上传大概10秒的视频,服务端会出现超时(上传3、4秒左右的视频没问题),java报错如下:

java.net.SocketTimeoutException: timeout
    at okio.Okio$4.newTimeoutException(Okio.java:227)
    at okio.AsyncTimeout.exit(AsyncTimeout.java:284)
...

我使用的是qiniu-java-sdk-7.2.14.jar,okhttp-3.5.0jar,okio-1.11.0.jar
并使用uploadManager.put上传视频,部分代码:

private final static Configuration configuration = new Configuration(Zone.autoZone());
    private static UploadManager uploadManager = new UploadManager(configuration);
...

uploadManager.put(multipartFile.getBytes(), null, getVideoToken());

我想知道:

  • 如何解决这个超时问题,文档中有提到分片上传,但是没有相应的范例
2018-07-02 提问

查看全部 2 个回答

0

用这个上传demo

//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;

Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);

try {
    Response response = uploadManager.put(localFilePath, key, upToken);
    //解析上传成功的结果
    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    System.out.println(putRet.key);
    System.out.println(putRet.hash);
} catch (QiniuException ex) {
    Response r = ex.response;
    System.err.println(r.toString());
    try {
        System.err.println(r.bodyString());
    } catch (QiniuException ex2) {
        //ignore
    }
}

看起来这个超时的报错不是七牛服务端给的;
一般1G以下的表单上传是没有问题的
你可以看下七牛这个uploadmanager的实现
https://github.com/qiniu/java...

你可能感兴趣的

推广链接