本文最后更新于 2026年6月15日 下午
修复文件上传失败时还返回成功的问题
前言
在先前对上传接口的开发中
文件上传失败时(如oss崩溃,密钥没配好等情况)不直接返回失败而返回成功并带上临时文件路径
这是不对的
现在对其进行修复
代码实现
由于上传接口是前后台系统公用的
这样只需要修复上传接口和涉及到的类和方法就行了
下面直接贴修复的代码
OssFileServiceImpl 中的 uploadOss方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public String uploadOss(MultipartFile file, String filePath) { Configuration cfg = new Configuration(Region.autoRegion()); cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2; UploadManager uploadManager = new UploadManager(cfg); String key = filePath; try { InputStream inputStream = file.getInputStream(); Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); Response response = uploadManager.put(inputStream, key, upToken, null, null); DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); log.info("文件上传七牛云成功: key={}, hash={}", putRet.key, putRet.hash); return domain + key; } catch (QiniuException ex) { Response r = ex.response; String errMsg = r == null ? ex.getMessage() : r.toString(); log.error("文件上传七牛云失败: key={}, error={}", key, errMsg, ex); try { if (r != null) { log.error("七牛云错误响应: {}", r.bodyString()); } } catch (QiniuException ex2) { log.warn("读取七牛云错误响应失败", ex2); } throw new RuntimeException("上传失败"); } catch (Exception ex) { log.error("文件上传七牛云异常: key={}", key, ex); throw new RuntimeException("上传失败"); } }
|
UploadServiceImpl 中的 uploadImage 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @Override public ResponseResult uploadImage(MultipartFile image) { if (image == null || image.isEmpty()) { throw new SystemException(AppHttpCodeEnum.FILE_NULL); } long maxSize = 2 * 1024 * 1024; if (image.getSize() > maxSize) { throw new SystemException(AppHttpCodeEnum.FILE_SIZE_ERROR); } String originalFilename = image.getOriginalFilename(); if (!originalFilename.endsWith(".png") && !originalFilename.endsWith(".jpg") && !originalFilename.endsWith(".gif") && !originalFilename.endsWith(".jpeg")) { throw new SystemException(AppHttpCodeEnum.FILE_TYPE_ERROR); } String filePath = OssFileConstants.TEMP_OSS_DIRECTORY_PATH_PREFIX + PathUtils.generateFilePath(originalFilename); String url; try { url = ossFileService.uploadOss(image, filePath); } catch (RuntimeException ex) { throw new SystemException(AppHttpCodeEnum.FILE_UPLOAD_ERROR); } redisCache.setCacheObject(RedisKeyConstants.TEMP_FILE_KEY_PREFIX + filePath, System.currentTimeMillis(), 24, TimeUnit.HOURS); return ResponseResult.okResult(url); }
|
添加一个上传失败的枚举
1
| FILE_UPLOAD_ERROR(1023, "上传失败"),
|
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/