无关风月
2024-08-20 9f88b12d16c83963dad8fb8f79d9eeba2c311518
guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java
@@ -1,100 +0,0 @@
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;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
@RestController
@RequestMapping("")
public class FileController {
    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) 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 = "文件上传", tags = {"文件上传"})
    @PostMapping(value = "/base/files/upload")
    public String fileUpload(@RequestParam(value = "file") MultipartFile file) throws IOException {
        InputStream inputStream = file.getInputStream();
        String filename = System.currentTimeMillis() + file.getOriginalFilename();
        String endpoint = "oss-cn-hongkong.aliyuncs.com";
        String accessKeyId = "LTAI5tQZzqsZYX5gw8yRNchQ";
        String accessKeySecret = "5yJVdXwRzwPZwKKXp07lRAc7tkTxQp";
        String bucketName = "bizuphk";
        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
        //这个问题需要处理一下
        // 创建OSSClient实例。
        //这个方案是对的。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
        // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
        PutObjectResult putObjectResult = ossClient.putObject(bucketName, filename, inputStream);
        OSSObject ossObject = ossClient.getObject(bucketName, filename);
        String uri = ossObject.getResponse().getUri();
        // 关闭OSSClient。
        ossClient.shutdown();
//        uri = uri.replace("http://nn-bucket.oss-cn-shanghai.aliyuncs.com",FILE_CDN);
        return uri;
    }
//    @GetMapping("/base/files/download/{fileName}")
//    @ApiOperation(value = "文件下载", tags = {"文件下载"})
//    public void downloadFile(@PathVariable("fileName") String fileName, HttpServletResponse response) {
//        InputStream inputStream = ossService.downloadFile(fileName);
//        if (inputStream != null) {
//            try {
//                StreamUtils.copy(inputStream, response.getOutputStream());
//                response.setContentType("application/octet-stream");
//                response.flushBuffer();
//            } catch (IOException e) {
//                // 处理下载失败的逻辑
//            }
//        } else {
//            // 处理文件不存在的逻辑
//        }
//    }
}