44323
2024-02-22 aa8ff2d61669d0779fdacdba76e26388587b435d
guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java
@@ -1,12 +1,16 @@
package com.stylefeng.guns.modular.api;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import com.stylefeng.guns.modular.file.OSSService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -18,14 +22,37 @@
@RestController
@RequestMapping("")
public class FileController {
    @Autowired
    private OSSService ossService;
    private static final String endpoint = "oss-cn-hongkong.aliyuncs.com";
    private static final String accessKeyId = "LTAI5tQZzqsZYX5gw8yRNchQ";
    private static final String accessKeySecret = "5yJVdXwRzwPZwKKXp07lRAc7tkTxQp";
    private static final String bucketName = "bizuphk";
    @PostMapping("/base/files/upload")
    @ApiOperation(value = "文件上传", tags = {"文件上传"})
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        return ossService.uploadFile(file);
    public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
        // 获取原始文件名
        String originalFilename = file.getOriginalFilename();
        // 提取文件后缀
        if (originalFilename != null && originalFilename.contains(".")) {
            System.err.println(originalFilename.substring(originalFilename.lastIndexOf(".")));
        }
        // 创建 OSSClient 实例
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        long l = System.currentTimeMillis();
        // 创建 PutObjectRequest 对象
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, String.valueOf(l)+"."+originalFilename.substring(originalFilename.lastIndexOf(".") + 1), file.getInputStream());
            ObjectMetadata metadata = new ObjectMetadata();
            // 取消文件缓存,文件每次都会从OSS服务器获取
            metadata.setHeader("Cache-Control", "no-cache");
            metadata.setHeader("Expires", "0");
            // 上传文件
            PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
            // 关闭 OSSClient 实例
            ossClient.shutdown();
            String fileUrl = "https://" + bucketName + "." +
                    endpoint + "/"
                    + String.valueOf(l)
                    +"."+originalFilename.substring(originalFilename.lastIndexOf(".")+ 1);
            return fileUrl;
    }
//    @ApiOperation(value = "服务端上传", notes = "服务端上传")