阿里云通过STS上传文件

时间:2024-10-19 22:26:05 类型:JAVA
字号:    

java通过STS上传文件到OSS

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@WebServlet(name = "OssUpload", value = "/OssUpload")
@MultipartConfig
public class OssUploadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        String accessKeyId = "STS.NU9MoqZR51pVsjdjPp1f9QpPt";
        String accessKeySecret = "6gnvTyvrsVmxwEZCWL2JTcmRx2QTvorGEoBGZzXdvzKC";
        String bucketName = "zhuangzi-bucket";
        String securityToken = "CAISywJ1q6Ft5B2yfSjIr5aMBtXFt40UhrK9cUzVjlAlPekVvrX7ljz2IHhMfXVtBegYs/s2nGBZ6/gelrh9SptIfkHfdsp36KlP9QSob9J5fB13L+ZW5qe+EE2/VjTZvqaLEcibIfrZfvCyESOm8gZ43br9cxi7QlWhKufnoJV7b9MRLGLaBHg8c7UwHAZ5r9IAPnb8LOukNgWQ4lDdF011oAFx+wgdgOadupTDtkqA1geikbJN+N6ue8OeApMybMslYbCcx/drc6fN6ilU5iVR+b1+5K4+om+f543AXwEPvkrfa7qFr4MzNmljb609ALVeq/zxifBjpvxyEhBGb7WoVgs8cVM8JOjIqKOscIsi5s6481TGFV55c8FdR3jkMj5V8L8hTnduUfAPRHG+p5JCZM90ZAFpFt5kTKnBL4rB5MUctfzRp1BBQbPUTzDnGoABiPcBGE8ul1pCpBCxVQK3DqCyumZ6ObzA2sR/tZ4bg3cB4E1N0WBVroa/ALOmpL17aNRJ8rI+WZqn8c4OA4gG+KvWDZRep0yGBgrBCWZbdxDxJn4y6I5c9X5SVfUSM83BqD8DrV+FBSb08ktCw5voBd7p5vS7LePJFHlSIr/shikgAA==";
        String fileDir = "upload/";

        // 确保你的表单设置了enctype="multipart/form-data"
        // 假设上传的文件字段名为"file"
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();

        // 使用SDK上传文件
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret,securityToken);

        try {
            // 生成新的文件名,避免重名冲突
            String newFileName = UUID.randomUUID().toString() + "-" + fileName;
            InputStream inputStream = filePart.getInputStream();

            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, "images/2024/" + newFileName, inputStream);
//            ossClient.putObject(bucketName, "images/2024/" + newFileName, inputStream);
            ossClient.putObject(putObjectRequest);
            ossClient.shutdown();

            // 返回文件的URL或其他处理
            String fileUrl = "https://" + bucketName + "." + endpoint + "/" + newFileName;
            response.getWriter().write("File uploaded successfully: " + fileUrl);
        } catch (Exception e) {
            response.getWriter().write("Error: " + e.getMessage());
        }
    }
}


<