摘要:请参见博客,请参阅阿里巴巴。可能包含该路径的文件名将保存到阿里巴巴。上传后,您将恢复到文件访问路径。如果您需要在上传时设置存储类型和权限,请参见以下示例代码:重复关闭所有文件。
参考博客:开始ali oss
存储桶配置信息:alios.properties
oss配置文件:aliossconfig.java @datapublic class aliossConfig aliossConfig {private string endpoint;私有字符串AccessKeyId;私有字符串AccessKeySecret;私人字符串存储桶名; private aliossConfig(){properties properties = new Properties();尝试{properties.load(aliossconfig.class.getResourceasStream(“/oss/alioss.properties”)); } catch(ioexception e){e.printstacktrace(); } endpoint = properties.getProperty(“ endpoint”); AccessKeyId = Proprties.getProperty(“ AccessKeyId”); AccessKeySecret = properties.getProperty(“ AccessKeySecret”); bucketName = properties.getProperty(“ bucketName”); }私有静态aliossConfig实例= new AliossConfig(); public static aliossConfig getInstance(){返回实例; }}工具类:aliossutil.java公共类Aliossutil {私有静态最终字符串端点= aliossConfig.getInstance()。 getEndpoint();私有静态最终字符串AccessKeyId = aliossConfig.getInstance()。 getAccessKeyId();私有静态最终字符串AccessKeySecret = aliossConfig.getInstance()。 getAccessKeySecret();私有静态最终字符串bucketName = aliossConfig.getInstance()。 getBucketName(); /** *将文件上传到阿里巴巴OSS * * @param sourcefilepathname本地文件 * @param aimfilepathn可能包含保存到阿里巴巴OSS * @return上传的路径的AME文件名 * @throws filenotfoundexpection */ public static String cling upload(字符串sourceFilePathName,String aimFilePathName),然后返回文件的访问路径。 if(aimfilepathname.startswith(“/”)){aimFilePathName = aimFilePathName.substring(1); } //如果上传时需要设置存储类型和权限,请参见以下示例代码:ObjectMetadata元数据= new ObjectMetadata(); int indexoFlastDot = aimfilepathname.lastindexof(“。”);字符串后缀= aimfilepathname.substring(indexofLastDot); metadata.setContentType(getContentType(后缀)); //避免覆盖文件aimFilePathName = aimFilePathName.substring(0,indexoflastDot) + system.currentTimeMillis() + suffix;putobjectRequest putoBjectRequest = new putobjectRequest(bucketName,aimFilePathName,is); //访问putobjectRequest.setMetadata(元数据)时请勿下载图像。 ossclient = new OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); ossclient.putObject(putobjectRequest);日期到期=新日期(System.CurrentTimeMillis() + 3600L * 1000 * 24 * 365 * 100); url url = ossclient.generetPresignedUrl(bucketName,aimFilePathname,到期); // ossclient ossclient.shutdown();返回url.tostring(); } / ** *上传网络实现Avatar到OSS * * @param Multemartfile * @return * / public static String上传(MultipartFile MultecrattFile)抛出IOEXECTIEfile.getInputStream(); //获取文件名字符串fileName = multipartFile.getOriginalFileName(); //避免文件int i = filename.lastIndexof(“。”);字符串后缀= filename.substring(i); filename = filename.substring(0,i) + system.currentTimeMillis() +后缀; //按日期// fileName fileName = datepath +“/” +文件名分类; // objectMetadata元数据=新设置存储类型和权限上传时,objectmetadata()。 metadata.setContentType(getContentType(filename.substring(filename.lastIndexof(“。”)))); //将文件上传到OSS时,必须指定包含文件后缀的完整路径,例如ABC/EFG/123.JPG。 putobjectRequest putobjectRequest = new putobjectRequest(bucketname,filename,inputstr)EAM); putobjectRequest.setMetadata(元数据); ossclient = new OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); ossclient.putObject(putobjectRequest); //文件访问日期日期=新日期(System.CurrentTimeMillis() + 3600L * 1000 * 24 * 365 * 100); url url = ossclient.generetPresignedUrl(bucketName,filename,expration); // ossclient ossclient.shutdown(); //将上传路径返回到OSS返回url.tostring()。 }/** *返回contentType * * @param fileNameextension * @return */private static String getContentType(字符串fileNameExtension){if(filenameextension.equalsignorecase('equalsignorecase(“ .bmp”))){返回“ image/bmp”; } if(filenameextension.equalsignorecase(“ .gif”))))){返回“ Image/gif”。 } if(filenameextension.equalsignorecase(“ .jpeg”)|| filenameextension.equalsignorecase(“ .jpg”)|| filenameextension.equalsignorecase(“ .png”))) }返回“ Image/JPG”。 } / ** *列出了指定路径下所有文件的文件名,如果要在root路径下列出所有文件,则path =“” * * @param路径 * @return * / public static listfileName(string path){list res res = new arrayList(); //创建一个ListObjectSrequest请求。 ListObjectSrequest ListObjectSrequest = new ListObjectSrequest(bucketName); //设置前缀参数以将所有文件输入娱乐目录。 ListObjectSrequest.setPrefix(path); ossclient = new OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); //列出文件。对象清单列表= ossclient.listObjects(listObjectSrequest); // traverse所有文件(ossobjectsummary objectsummary:listing.getObjectsummaries()){system.out.println(objectSummary.getKey()); } //关闭ossclient。 ossclient.shutdown();返回res。 } /** *在文件 * /public static list listfileurl(string path){list res = new arraylist(); // construct listObjectSrequest listBigntSrequestSrequest listObjectSrequest = new ListObjectSrequest(bucketName); //设置前缀参数以将所有文件输入娱乐目录。 ListObjectSrequest.setPrefix(path); ossclient = new OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); //列出文件。 对象清单列表= ossclient.listobjects(ListObjectSrequest); //遍历所有文件。 for(OssObjectSummary Objectsummary:listing.getObjectSummaries()){//文件访问路径expation = new Date(system.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 100); url url = ossclient.generetPresignedUrl(bucketName,objectSummary.getKey(),expiration); res.add(url.tostring())); } //关闭ossclient。 ossclient.shutdown();返回res。 } / ** *确定文件是否存在 * * @param objectName * @return * / public static boolean isfileExist(string objectName){oss ossclient = new OssClientBuilder()。 boolean res = ossclient.doesobjectExist(bucketName,objectName);返回res。 } /** *用文件名下载文件 * * @para下载moplicename fileName * @param localfileName fileName本地 */ public static void downingfile(字符串objectName,string localfileName){oss ossclient = new OssClientBuilder()。 //将OSS文件下载到本地文件。 如果指定的本地文件将被覆盖,或者不存在,则将创建。 ossclient.getObject(new GetObjectRequest(bucketName,objectName),new File(localfileName)); //关闭Ossclient。 ossclient.shutdown(); } / ** *删除文件或目录 * * @param objectName * / public static void delleltefile(字符串objectName){oss ossclient = new OssClientBuilder()。 ossclient.deleteObject(bucketName,objectName); ossclient.shutdown(); }/** *批处理删除文件或目录 * * @param键 */public静态void deletefiles(list键){oss ossclient = new OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); //删除文件。 deleteObjectSresult deleteObjectSresult = ossclient.deleteObjects(new deleteObjectSrequest(bucketName).withKeys(keys)); java.util.list deletedObjects = deleteObjectsresult.getDeletedObjects(); ossclient.shutdown(); } / ** *创建文件夹 * * @param文件夹 * @return * / public static String createfolder(String folder){//文件夹名称最终字符串keySuffixWithSlashslash =文件夹; OSS Ossclient =新的OssClientBuilder()。构建(端点,AccessKeyID,AccessKeySecret); //要确定文件夹是否存在,请使用if(!ossclient.doesobjectExist(bucketName,keySuffixWithSlashslash))){//创建一个文件夹if(!iment.putObject(bucketName,keySuffixWithSlash,new bytearrayInputStream(new byte [0])); //检索文件夹名称OssObject对象= ossclient.getObject(bucketName,keySuffixWithSlash);字符串fileDir = object.getKey(); ossclient.shutdown();申报表。 }返回KeysuffixWithSlash。 }}
注意:避免在OSS链接连接池中关闭错误,请勿在类中创建Ossclient对象。当您执行此操作时,所有方法共享此实例对象并在很短的时间内连续将其发送在前端,从而导致异常错误。 必须在方法中创建骨化对象。
测试代码类aliossutiltest {@test void upload()抛出filenotfoundexception {//文件字符串url = aliossutil.upload(“ e://picture/510.jpg” System.out.println(url); } @test void listFileName(){list res = aliossutil.listfilename(“ aa/”); res.foreach(System.ou} @test void listFileurl(){list res = aliossutil.listfileurl(“ aa/”); res.foreach(system.out :: println); } @test void isfileExist(){boolean res = aliossutil.isfileexist(“ aa/bb/ab1637160001528.jpg”); system.out.println(res); } @test void downloadfile(){aliossutil.downloadfile(“ aa/bb/ab1637160001528.jpg”,“ d:/aaawer.jpg”); } @test void deleltefile(){aliossutil.deleleltefile(“ aa/bb/ab1637160001528.jpg”); } @test void deletefiles(){list keys = list.of(“ aa/bb/ab1637160001528.jpg”,“ aa/bb/bb/ba1637160268079.jpg”,“ aa/bb/cc”); aliossutil.deletefiles(key); } @test void createfolder(){字符串文件夹= aliossutil.createfolder(“ aa/bb/cc”); system.out.println(folder); }}}
评论前必须登录!
注册