ファイルをアップロードし、ダウンロードリンクの戦略を取得するためのアリOSSクラウドオブジェクトストレージ

次のように基本的な戦略は次のとおりです。

  • サーバーにアップロードされたファイルを保存し、
  • OSSBucketに、サーバー上のファイルを転送し、
  • アップロードされたファイルへのダウンロードリンクを取得し、
  • 次に、サーバは、一時ファイルストレージを削除します

コード:

###ツール:

package cn.hcnet2006.blog.hcnetwebsite.util;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * OSS文件上传
 */
public class OSSUtils {
    @Autowired
    //private  static OSSConstant ossConstant;
    static String bucketName = "hcnXXX-apk";

    static String accessKeyId = "LTAI4FXXXXXXucSR5AX";

    static String accessKeySecret = "yuYPXXXXXXX---lV0MBUaWjLdC";

    static String endpoint = "oss-cn-shenzhen.aliyuncs.com";
    private static OSS ossClient ;
    private  static  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    public static String upload(File file,String apkName){
        ossClient =  new OSSClientBuilder().build(endpoint,accessKeyId,
                accessKeySecret);

        System.out.println("accessKeyId2:"+accessKeyId);

        if(file == null){
            return null;
        }
        String dateStr = sdf.format(new Date());


        try{
            //容器不存在就创建
            if(!ossClient.doesBucketExist(bucketName)){
                ossClient.createBucket(bucketName);
                CreateBucketRequest cbr = new
                        CreateBucketRequest(bucketName);
                cbr.setCannedACL(
                        CannedAccessControlList.Private
                );
                ossClient.createBucket(cbr);
            }
            //上传文件

            InputStream is = new FileInputStream(file);
            PutObjectResult result = ossClient.putObject(bucketName,apkName,file);
            //System.out.println(result.getRequestId());
           // String uri = result.getResponse().getUri();
            // 设置这个文件地址的有效时间
            Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
			//返回上传文件下载路径
            String url = ossClient.generatePresignedUrl(bucketName, apkName, expiration).toString();
			//去掉加密信息,因为已经开放了读权限
            System.out.println("object:"+apkName+"存入成功");
            System.out.println("上传路径:"+url);
            url = url.substring(0,url.indexOf("?"));
            return url;
        }catch (OSSException oe){
            oe.printStackTrace();
        }catch (ClientException | FileNotFoundException ce){
            ce.printStackTrace();
        }finally{
            ossClient.shutdown();
        }
        return null;
    }
}

##コントローラーの論理

        try{
            //转义文件到服务器
            uploadFile.transferTo(folder);
            //从服务器获取文件传递到阿里云OSS.返回下载链接地址
            String avator_url = OSSUtils.upload(folder,sysUser.getName()+".jpg");
            //删除服务器缓存文件
            folder.delete();
          
公開された29元の記事 ウォンの賞賛3 ビュー547

おすすめ

転載: blog.csdn.net/weixin_43404791/article/details/104651001