servlet接收表单文件上传到阿里oss指定目录下

时间:2024-10-17 21:40:08 类型:JAVA
字号:    

servlet接收表单文件上传并上传到阿里oss指定目录下


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

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 = "endpoint";
        String accessKeyId = "";
        String accessKeySecret = "";
        String bucketName = "";
       

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

        // 使用SDK上传文件
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            // 生成新的文件名,避免重名冲突
            String newFileName = UUID.randomUUID().toString() + "-" + fileName;
            InputStream inputStream = filePart.getInputStream();
            ossClient.putObject(bucketName, "images/2024/" + newFileName, inputStream);
            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());
        }
    }
}


<