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()); } } }