中文小说网站建设与维护,手机开发游戏的软件,专业的外贸网站建设公司,网站开发工具概述与比较OSS 文件上传流程详解以下是基于提供代码实现的 OSS 文件上传完整流程#xff0c;包含配置、核心代码及步骤说明#xff1a;一、前期准备阿里云 OSS 配置需在阿里云控制台创建 Bucket#xff0c;获取endpoint、accessKeyId、accessKeySecret和bucketName配置文件位置#x…OSS 文件上传流程详解以下是基于提供代码实现的 OSS 文件上传完整流程包含配置、核心代码及步骤说明一、前期准备阿里云 OSS 配置需在阿里云控制台创建 Bucket获取endpoint、accessKeyId、accessKeySecret和bucketName配置文件位置src/main/resources/oss.propertiesproperties# oss.properties配置示例 aliyun.oss.endpointoss-cn-beijing.aliyuncs.com aliyun.oss.accessKeyIdLTAI5tGRHc12i6A4ZEnrUaRR aliyun.oss.accessKeySecretEEeB0vBuvmDlXK1fkX2cBMWcsztlx0 aliyun.oss.bucketNamezjc-java-spring二、核心组件配置OSS 客户端配置OssConfig.javajava运行Configuration public class OssConfig { // 从配置文件注入OSS连接参数 Value(${aliyun.oss.endpoint}) private String endpoint; Value(${aliyun.oss.accessKeyId}) private String accessKeyId; Value(${aliyun.oss.accessKeySecret}) private String accessKeySecret; // 创建OSS客户端实例并交给Spring管理 Bean(destroyMethod shutdown) public OSS ossClient() { return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); } }文件上传工具类OssUtils.javajava运行Component public class OssUtils { Autowired private OSS ossClient; Value(${aliyun.oss.bucketName}) private String bucketName; Value(${aliyun.oss.endpoint}) private String endpoint; /** * 文件上传到OSS * param file 要上传的文件 * param folder OSS存储文件夹 * return 外网访问URL */ public String upload(MultipartFile file, String folder) throws Exception { // 1. 校验文件是否为空 if (file.isEmpty()) { throw new Exception(上传文件不能为空); } // 2. 处理文件名和后缀 String originalFilename file.getOriginalFilename(); String suffix ; if (originalFilename ! null originalFilename.contains(.)) { suffix originalFilename.substring(originalFilename.lastIndexOf(.)); } String fileName originalFilename; // 使用原始文件名 // 3. 处理文件夹路径 if (!folder.endsWith(/)) { folder /; } String objectName folder fileName; // 最终OSS存储路径 // 4. 上传文件到OSS InputStream inputStream file.getInputStream(); try { ossClient.putObject(bucketName, objectName, inputStream); } finally { inputStream.close(); // 确保流关闭 } // 5. 构建文件访问URL String endpointWithoutProtocol endpoint.replaceFirst(^https?://, ); return https:// bucketName . endpointWithoutProtocol / objectName; } }三、业务层实现服务接口FileService.javajava运行public interface FileService { // 上传文件并返回文件信息 File uploadFile(MultipartFile file, String fileName); }服务实现类FileServiceImpl.javajava运行Service public class FileServiceImpl implements FileService { Autowired private FileMapper fileMapper; Autowired private OssUtils ossUtils; Override public File uploadFile(MultipartFile file, String fileName) { try { // 1. 上传文件到OSS指定存储文件夹 String folder file/; String fileUrl ossUtils.upload(file, folder); // 2. 构建文件实体对象 File fileEntity new File(); fileEntity.setName(fileName); fileEntity.setUrl(fileUrl); // 提取文件标识用于后续删除 String keyPoints fileUrl.substring(fileUrl.lastIndexOf(/) 1); fileEntity.setKeyPoints(keyPoints); // 3. 保存文件信息到数据库 fileMapper.insert(fileEntity); return fileEntity; } catch (Exception e) { throw new RuntimeException(文件上传失败 e.getMessage()); } } }四、控制器层接收前端请求java运行Controller RequestMapping(/file) public class FileController { Autowired private FileService fileService; PostMapping(/upload) ResponseBody public MapString, Object upload( RequestParam(file) MultipartFile file, RequestParam(fileName) String fileName) { MapString, Object result new HashMap(); try { // 1. 校验参数 if (file null || file.isEmpty()) { result.put(success, false); result.put(message, 请选择文件); return result; } // 2. 调用服务层上传 File fileEntity fileService.uploadFile(file, fileName); // 3. 返回结果 result.put(success, true); result.put(data, fileEntity); result.put(message, 上传成功); } catch (Exception e) { result.put(success, false); result.put(message, 上传失败 e.getMessage()); } return result; } }五、SpringMVC 文件上传配置在springmvc.xml中配置文件上传解析器xml!-- 文件上传解析器 -- bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver property namemaxUploadSize value10485760/ !-- 最大10MB -- property namedefaultEncoding valueUTF-8/ /bean六、完整上传流程总结前端请求通过表单或 AJAX 提交MultipartFile文件和文件名参数校验控制器检查文件是否为空、文件名是否存在OSS 上传工具类处理文件路径和名称通过 OSS 客户端将文件流上传到指定 Bucket生成外网可访问的文件 URL数据持久化将文件 URL、名称、标识等信息存入数据库返回包含文件信息的成功响应异常处理任何环节出错时返回错误信息七、关键注意点确保 OSS Bucket 的访问权限设置正确通常为公共读生产环境中应使用 UUID 生成唯一文件名避免重名覆盖大文件上传建议分块上传需额外实现记得在项目关闭时关闭 OSS 客户端连接已通过PreDestroy实现实际部署时需替换为自己的 OSS 密钥信息避免泄露