OSS文件上传时遇到Unknown的问题

文章描述了在使用阿里云OSS服务上传文件时遇到Unknown错误的问题,经过排查发现是MultipartFile转换为File的过程中出现了问题。问题的关键在于使用FileUtil.writeFromStream方法时,需要正确处理返回值。修复方法是直接使用FileUtil.writeFromStream的返回值创建File对象。作者强调了仔细阅读源码的重要性。
摘要由CSDN通过智能技术生成

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;
}

后记

还是要仔细阅读源码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值