OSS文件上传时遇到Unknown的问题
实现过程中遇到unknown报错,经历了怀疑网络问题、怀疑oss-sdk版本问题,最终发现是文件流处理问题。记录以备忘。。
问题
上传报错
[ErrorCode]: Unknown
[RequestId]: Unknown
com.aliyun.oss.clientException: Illegal file path: u03\xxxxx\xxx.doc
[ErrorCode]: Unknown
[RequestId]: Unknown
at com.aliyun.oss.internal.OSSObjectOperation.writeObjectInternal(OSSObjectOperation.java:1143)
at com.aliyun.oss.internal.OSSObjectOperation.putObject(OSSObjectOperation,java:130)
at com.aliyun.oss.OSSClient.putObject(0SSClient.java:619)
原因
上传oss前做了MultipartFile 转 File,问题出在转换上。writeFromStream看似把流写进文件,也需要使用return值才行。
/**
* 错误代码
*/
import cn.hutool.core.io.FileUtil;
public static File multipartFileToFile(MultipartFile multipartFile, String filePath, String realName) {
String lastFilePath = filePath + File.separator + realName;
try {
FileUtil.writeFromStream(multipartFile.getInputStream(), lastFilePath);
return new File(lastFilePath);
} catch (IOException e) {
log.error(e.getMessage());
}
return null;
}
/**
* 正确代码
*/
import cn.hutool.core.io.FileUtil;
public static File multipartFileToFile(MultipartFile multipartFile,String filePath, String realName) {
String lastFilePath = filePath + File.separator + realName;
try {
return FileUtil.writeFromStream(multipartFile.getInputStream(), lastFile);
} catch (IOException e) {
log.error(e.getMessage());
}
return null;
}
后记
还是要仔细阅读源码。