Example of uploading files to OSS (alicloud) using java
This article describes how Java implements the function of uploading files to OSS (Alibaba cloud). Share with you for your reference, as follows:
Before performing this function, we need to import the toolkit officially provided by alicloud OSS
aliyun-sdk-oss-2.5. If you have the latest version of 0.jar, download the latest version
aliyun.upload.AliyunConfig package aliyun.upload; public final class AliyunConfig { //你的oss所在域,要加http:// 不明白可以对照你的文件引用地址 public static String endpoint = "http://oss-cn-shenzhen.aliyuncs.com"; //密匙keyId 可以在阿里云获取到 public static String accessKeyId = "xxxxxxx"; //密匙keySecret 可以在阿里云获取到 public static String accessKeySecret = ""; //你的bucketName 名称 即是你的OSS对象名称 不明白查oss开发文档专业术语 public static String bucketName = ""; }
aliyun.upload.IAliyunUpload package aliyun.upload; public interface IAliyunUpload { /** * @param * String filePathName 本地图片路径(D:/xxxx/xxxx....../xx/xx.jgp|xx.png|..) * String savePathName 将要保存到OSS上的路径地址 * */ public String uploadFile(String filePathName,String savePathName); }
aliyun.upload.AliyunUploadVersion1 package aliyun.upload; import java.io.File; import java.io.IOException; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.CompleteMultipartUploadResult; import com.aliyun.oss.model.UploadFileRequest; import com.aliyun.oss.model.UploadFileResult; import Log.Log; /** * 阿里云文件上传 - 简易版 * */ public class AliyunUploadVersion1 implements IAliyunUpload { /** * 断点续传 * */ @Override public String uploadFile(String uploadFile,String savePathName) { OSSClient ossClient = new OSSClient(AliyunConfig.endpoint,AliyunConfig.accessKeyId,AliyunConfig.accessKeySecret); try { UploadFileRequest uploadFileRequest = new UploadFileRequest(AliyunConfig.bucketName,savePathName); // 待上传的本地文件 uploadFileRequest.setUploadFile(uploadFile); // 设置并发下载数,默认1 uploadFileRequest.setTaskNum(5); // 设置分片大小,默认100KB uploadFileRequest.setPartSize(1024 * 1024 * 1); // 开启断点续传,默认关闭 uploadFileRequest.setEnableCheckpoint(true); UploadFileResult uploadResult = ossClient.uploadFile(uploadFileRequest); CompleteMultipartUploadResult multipartUploadResult = uploadResult.getMultipartUploadResult(); return multipartUploadResult.getLocation(); } catch (OSSException oe) { Log.e("*************************************************OSS upload file error create_date " + tool.Tool.getDate() + "*************************************"); Log.e("Caught an OSSException,which means your request made it to OSS," + "but was rejected with an error response for some reason."); Log.e("Error Message: " + oe.getErrorCode()); Log.e("Error Code: " + oe.getErrorCode()); Log.e("Request ID: " + oe.getRequestId()); Log.e("Host ID: " + oe.getHostId()); Log.e("*************************************************OSS upload file error*************************************"); } catch (ClientException ce) { Log.e("Caught an ClientException,which means the client encountered " + "a serIoUs internal problem while trying to communicate with OSS," + "such as not being able to access the network."); Log.e("Error Message: " + ce.getMessage()); } catch (Throwable e) { e.printStackTrace(); } finally { ossClient.shutdown(); } return null; } }
File upload container
package aliyun.upload; import org.springframework.stereotype.Repository; @Repository("aliyun_upload") public class AliyunUpload extends AliyunUploadVersion1 { /** * 上传文件 * */ @Override public String uploadFile(String filePath,String savePathName) { return super.uploadFile(filePath,savePathName); } }
spring. beans. service. Uploadservice file upload service
package spring.beans.service; import java.io.File; import java.io.IOException; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Service; import org.springframework.web.multipart.multipartfile; import aliyun.upload.AliyunUpload; import tool.RandomNumStr; import tool.Tool; @Service(value="upload_service") public class UploadService { //默认 本地存储路径 private final String save_local_path = "D:/java_class/Company/WebRoot/"; //默认 文件保存路径 private String save_context_path = "Upload/images/"; public void setSavePath(String savePath) { this.save_context_path = savePath; } /** * 阿里云文件上传 * @param * multipartfile file 文件流 * @return * String 文件引用路径 如 String filePath = "http://aliyun.xxxx.xxxx/xxxx/xxxx/xxxx.jpg" * */ public String aliyunUploadFile(multipartfile file) { //获取文件名称 String fileName = file.getOriginalFilename(); //生成存储路径 String save_handler_path = save_local_path + save_context_path; //获得文件后缀 String prefix=fileName.substring(fileName.lastIndexOf(".")); //存储目录 File parentDir = new File(save_handler_path); //存储目录是否存在 if(!parentDir.exists()) { parentDir.mkdirs(); } //生成文件存储名称 String fileSaveName = RandomNumStr.createRandomString(7) + String.valueOf(new Date().getTime()) + prefix; try{ File saveFile = new File(save_handler_path,fileSaveName); //移动临时文件 file.transferTo(saveFile); //新增阿里云文件上传 AliyunUpload aliyunUpload = new AliyunUpload(); String fileUrl = aliyunUpload.uploadFile(save_handler_path+fileSaveName,save_context_path+fileSaveName); saveFile.delete(); return fileUrl; }catch(IOException e) { return null; } } /** * 文件存储 * @param * MyltipartFile file 文件资源 * @return * 文件文件存储地址 * */ public String localUploadFile(multipartfile file,HttpServletRequest request) { //获取文件名称 String fileName = file.getOriginalFilename(); //生成存储路径 String save_handler_path = save_local_path + save_context_path; //获得文件后缀 String prefix=fileName.substring(fileName.lastIndexOf(".")); //存储目录 File parentDir = new File(save_handler_path); //存储目录是否存在 if(!parentDir.exists()) { parentDir.mkdirs(); } //生成文件存储名称 String fileSaveName = RandomNumStr.createRandomString(7) + String.valueOf(new Date().getTime()) + prefix; try{ //移动临时文件 file.transferTo(new File(save_handler_path,fileSaveName)); //文件地址 return Tool.getDomain(request) + save_context_path + fileSaveName; }catch(IOException e) { return null; } } }
For more information about Java algorithms, readers who are interested can see the topics on this site: summary of java file and directory operation skills, tutorial on Java data structure and algorithms, summary of Java DOM node operation skills and summary of Java cache operation skills
I hope this article will be helpful to you in Java programming.