OssService代码

package com.ben.cheng.utils;
 

import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;

import com.alibaba.sdk.android.oss.ClientException;
import com.alibaba.sdk.android.oss.OSSClient;
import com.alibaba.sdk.android.oss.ServiceException;
import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback;
import com.alibaba.sdk.android.oss.callback.OSSProgressCallback;
import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;
import com.alibaba.sdk.android.oss.model.CopyObjectRequest;
import com.alibaba.sdk.android.oss.model.CopyObjectResult;
import com.alibaba.sdk.android.oss.model.DeleteObjectRequest;
import com.alibaba.sdk.android.oss.model.DeleteObjectResult;
import com.alibaba.sdk.android.oss.model.OSSRequest;
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
import com.alibaba.sdk.android.oss.model.PutObjectResult;
import com.alibaba.sdk.android.oss.model.ResumableUploadRequest;
import com.alibaba.sdk.android.oss.model.ResumableUploadResult;
import com.ztsc.commonutils.RandomUntil;
import com.ztsc.commonutils.logcat.LogUtil;
import com.ztsc.house.application.MApplication;
import com.ztsc.house.application.MApplicationInfo;

import java.io.File;
import java.util.ArrayList;


/**
 * Created by benchengzhou on 2019/2/14  11:26 .
 * 作者邮箱: [email protected]
 * 功能描述: 阿里云对象服务测试
 * 类    名: OssService
 * 备    注:
 */

public class OssService {
    private OSSClient mOss;
    private String mBucket;
    private Handler mDelivery;


    /**
     *
     * @param oss       oss实例对象
     * @param bucket    bucket源存储空间
     */
    public OssService(OSSClient oss, String bucket) {
        this.mOss = oss;
        this.mBucket = bucket;
        mDelivery = new Handler(Looper.getMainLooper());
    }


    //获取主线程的调度
    public Handler getDelivery() {
        return mDelivery;
    }




    /**
     * 获取指定阿里oss的bucket中时候是否存在对应名称的文件对象
     *
     * @param objectKey  对象在阿里服务器的存储路径
     * @return true      文件已存在
     */
    public boolean isObjectExit(String objectKey) {
        boolean fileExist = false;
        try {
            if (mOss.doesObjectExist(mBucket, objectKey)) {
                Log.d("doesObjectExist", "object exist.");
                fileExist = true;
            } else {
                Log.d("doesObjectExist", "object does not exist.");
            }
        } catch (ClientException e) {
            // 本地异常如网络异常等
            e.printStackTrace();
        } catch (ServiceException e) {
            // 服务异常
            Log.e("ErrorCode", e.getErrorCode());
            Log.e("RequestId", e.getRequestId());
            Log.e("HostId", e.getHostId());
            Log.e("RawMessage", e.getRawMessage());
        }

        return fileExist;
    }


    /**
     * 常规单个文件上传,请注意如果文件过大(相对网速考虑),请考虑使用
     *
     * @param filePath                  本地文件存储路径
     * @param imageUpLoadCallback       回调
     * @param errRetry                  出错重试的最多次数
     */
    public void upLoadSigleFile(String filePath, ImageUpLoadCallback imageUpLoadCallback, boolean errRetry) {

        //开始
        if (imageUpLoadCallback != null) {
            mDelivery.post(new Runnable() {
                @Override
                public void run() {
                    imageUpLoadCallback.onStart();
                }
            });
        }


        if (TextUtils.isEmpty(filePath) || !new File(filePath).exists()) {
            LogUtil.e("文件_" + filePath + ":文件不存在");
            if (imageUpLoadCallback != null) {
                mDelivery.post(new Runnable() {
                    @Override
                    public void run() {
                        imageUpLoadCallback.onFinish();
                    }
                });
            }
            return;
        }

        File file = new File(filePath);
        long fileTotalSize = file.length();

        String tempFileName = "zt_" + System.currentTimeMillis() + "_" + RandomUntil.getNumLargeSmallLetter(5) + "_" + file.getName();


        // 构造上传请求。

        PutObjectRequest put = new PutObjectRequest(mBucket, tempFileName, file.getAbsolutePath());
        put.setCRC64(OSSRequest.CRC64Config.YES);

        // 异步上传时可以设置进度回调。
        put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
            @Override
            public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
                Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
                //计算当前大小
                if (imageUpLoadCallback != null) {
                    mDelivery.post(new Runnable() {
                        @Override
                        public void run() {
                            imageUpLoadCallback.onProgress(currentSize, fileTotalSize);
                        }
                    });
                }
            }
        });


        OSSAsyncTask task = MApplicationInfo.getInstance().getOss().asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
            @Override
            public void onSuccess(PutObjectRequest request, PutObjectResult result) {
                Log.d("PutObject", "UploadSuccess");
                Log.d("ETag", result.getETag());
                Log.d("RequestId", result.getRequestId());
                if (imageUpLoadCallback != null) {
                    ArrayList<String> imgUrl = new ArrayList<>();
                    String url = mOss.presignPublicObjectURL(mBucket, tempFileName);
                    imgUrl.add(url);
                    mDelivery.post(new Runnable() {
                        @Override
                        public void run() {
                            imageUpLoadCallback.onFinish();
                            imageUpLoadCallback.onSuccess(imgUrl);
                        }
                    });
                }
            }

            @Override
            public void onFailure(PutObjectRequest request, ClientException
                    clientExcepion, ServiceException serviceException) {
                // 请求异常。
                if (clientExcepion != null) {
                    // 本地异常,如网络异常等。
                    clientExcepion.printStackTrace();
                }
                if (serviceException != null) {
                    // 服务异常。
                    Log.e("ErrorCode", serviceException.getErrorCode());
                    Log.e("Req
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以提供一些实现思路和代码示例,以下是一份Java代码实现示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import com.aliyun.oss.OSS; import com.aliyun.oss.model.PutObjectResult; import java.io.IOException; import java.util.UUID; @Service public class OSSService { @Autowired private OSS ossClient; // 上传文件到OSS public String uploadFileToOSS(MultipartFile file) throws IOException { // 获取文件名 String originalFilename = file.getOriginalFilename(); // 获取文件后缀 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); // 生成新的文件名 String newFileName = UUID.randomUUID().toString() + "." + suffix; // 上传文件到OSS PutObjectResult result = ossClient.putObject("your-bucket", newFileName, file.getInputStream()); // 返回文件访问路径 return "https://your-bucket.oss-cn-hangzhou.aliyuncs.com/" + newFileName; } } ``` 在代码示例中,我们引入了aliyun-java-sdk-oss依赖,通过Autowired注解注入ossClient,并定义了一个uploadFileToOSS方法,该方法接收一个MultipartFile类型的文件参数,上传文件到指定的Bucket,并返回文件访问路径。 确保配置文件中正确配置了OSS的accessKeyId、accessKeySecret和endpoint等参数。同时,还需要考虑文件上传时可能出现的异常,需进行合理的异常处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值