对阿里云OSS上传小文件时的进度,想过两个方法:一是,通过多线程监测Inputstream剩余的字节数来计算,但是因为Inputstream在两个线程中共用,如果上传线程将Inputstream关闭,在监测线程就会报“句柄无效”的错误,甚至会导致上传失败;第二个方法是通过线程不断监测OSS上已经上传文件的大小,但是在文件完全上传前是不能获得文件大小的。最后突然灵感来了,把两个方法同时使用就能够监测文件上传的进度。看代码:// 上传小文件
private static void uploadSmallFile(final OSSClient client, final String bucketName,
final String key, final File uploadFile)
throws OSSException, ClientException, FileNotFoundException {
ObjectMetadata objectMeta = new ObjectMetadata();
objectMeta.setContentLength(uploadFile.length());
// 可以在metadata中标记文件类型
objectMeta.setContentType("application/pdf");
//对object进行服务器端加密,目前服务器端只支持x-oss-server-side-encryption加密
objectMeta.setHeader("x-oss-server-side-encryption", "AES256");
final InputStream input = new FileInputStream(upload