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 = "";
// 確保你的表單設(shè)置了enctype="multipart/form-data"
// 假設(shè)上傳的文件字段名為"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());
}
}
}