参考腾讯云官方SDK文档
uploadTest.java的servlet文件:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream is=null;
FileOutputStream fos=null;
FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> list=upload.parseRequest(request);
for(FileItem li:list) {
//判断是否文本标签
if(li.isFormField()) {
String field=li.getFieldName();//获取标签名
String value=li.getString();//获取标签值
System.out.println(field+":"+value);
}else {
//文件输入流,读取数据
is=li.getInputStream();
String filename=li.getName();//获取上传文件名
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials("AKIDQmwvjMt7nLjvwof2MURCrLenmZCk7MND", "oQtCPRHSUL7qTvAII8f5JMDvIfvzr9JI");
// 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing"));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
String bucketName = "fcmusic-1257232059";
ObjectMetadata objectMetadata = new ObjectMetadata();
// 设置输入流长度为 500
objectMetadata.setContentLength(li.getSize());
// 设置 Content type, 默认是 application/octet-stream
PutObjectResult putObjectResult = cosclient.putObject(bucketName, filename, is, objectMetadata);
//生成公有无时间限制的链接
GeneratePresignedUrlRequest req =new GeneratePresignedUrlRequest(bucketName, filename, HttpMethodName.GET);
URL url = cosclient.generatePresignedUrl(req);
System.out.println(url.toString());
cosclient.shutdown();
//生成不会重复的文件名,生成32位字符串,保证上传文件名不重复
/*UUID.randomUUID().toString();*/
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(is!=null) {is.close();}
if(fos!=null) {fos.close();}
}
}