小工具知识网

当前位置: 首页 > 行业知识 > Android 图片裁剪并批量上传视频图片到阿里云OSS

行业知识

Android 图片裁剪并批量上传视频图片到阿里云OSS

2026-11-14 23:50:34 来源:互联网转载

���加依赖:

  implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'    implementation 'com.soundcloud.android:android-crop:1.0.1@aar' //裁剪包,高版本调用手机裁剪功能不行,调用这个包    //glide    implementation 'com.github.bumptech.glide:glide:4.12.0'    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'    //阿里云oss上传//    implementation 'com.aliyun.dpa:oss-android-sdk:+'    implementation 'com.aliyun.dpa:oss-android-sdk:2.9.13'    implementation 'commons-codec:commons-codec:1.4'    //裁剪控件//    api 'com.theartofdev.edmodo:android-image-cropper:2.7.0'    api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'    implementation 'top.zibin:Luban:1.1.8'    //RecyclerViewAdapter    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.50'

在清单文件AndroidmMainfest中添加权限:

                 

打开相册前动态请求图库权限:

static final String[] PS={            /*Manifest.permission.READ_CONTACTS,*/            /*Manifest.permission.CAMERA,            Manifest.permission.READ_PHONE_STATE,            Manifest.permission.RECORD_AUDIO,*/            Manifest.permission.WRITE_EXTERNAL_STORAGE    };      boolean checkPermission(){        boolean ok=true;        for(String p: PS){            ok=checkCallingOrSelfPermission(p)== PackageManager.PERMISSION_GRANTED;            if(!ok) break;        }        if(!ok) return false;        return true;    }//判断是否拥有权限:if(!checkPermission()){                    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){                        requestPermissions(PS, PS.hashCode());                    }                    return;                }                startActivity(new Intent(MainActivity.this, SelectPicActivity.class));

 

SelectPicActivity:
package com.example.testcsdnproject.picdemo;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.GridLayoutManager;import androidx.recyclerview.widget.RecyclerView;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.example.testcsdnproject.R;import com.luck.picture.lib.PictureSelector;import com.luck.picture.lib.animators.AnimationType;import com.luck.picture.lib.config.PictureConfig;import com.luck.picture.lib.config.PictureMimeType;import com.luck.picture.lib.entity.LocalMedia;import com.luck.picture.lib.language.LanguageConfig;import com.luck.picture.lib.tools.SdkVersionUtils;import java.util.ArrayList;import java.util.List;//选择相册public class SelectPicActivity extends AppCompatActivity {    private TextView tv_upload;    private RecyclerView rv_dynamic;    private GridImageAdapter2 gridImageAdapter2;    private List selectList = new ArrayList();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_select_pic);        tv_upload = findViewById(R.id.tv_upload);        rv_dynamic = findViewById(R.id.rv_dynamic);        GridLayoutManager manager = new GridLayoutManager(this,4,RecyclerView.VERTICAL,false);        rv_dynamic.setLayoutManager(manager);        gridImageAdapter2 = new GridImageAdapter2(this,onAddPicClickListener);        rv_dynamic.setAdapter(gridImageAdapter2);        tv_upload.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (selectList.size() == 0){                    Toast.makeText(SelectPicActivity.this, "请上传图片视频。", Toast.LENGTH_SHORT).show();                    return;                }                uploadFile();            }        });        //添加点击事件        gridImageAdapter2.setOnItemClickListener(new GridImageAdapter2.OnItemClickListener() {            @Override            public void onItemClick(View v, int position) {                if (selectList.size()>0){                    LocalMedia media = selectList.get(position);                    String pictureType = media.getMimeType();                    int mediaType = PictureMimeType.getMimeType(pictureType);                    switch (mediaType){                        case 1 :    //预览图片                            PictureSelector.create(SelectPicActivity.this).externalPicturePreview(position,selectList,0);                            break;                        case 2 :    //预览视频                            PictureSelector.create(SelectPicActivity.this).externalPictureVideo(media.getPath());                            break;                        case 3 :    //预览音频                            PictureSelector.create(SelectPicActivity.this).externalPictureAudio(media.getPath());                            break;                    }                }            }        });    }    // 从相册返回结果    @Override    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == RESULT_OK){            switch (requestCode){                case PictureConfig.CHOOSE_REQUEST:                    selectList = PictureSelector.obtainMultipleResult(data);                    gridImageAdapter2.setList(selectList);                    gridImageAdapter2.notifyDataSetChanged();                    break;            }        }    }    //把图片上传OSS    private String filePath;    private List urls = new ArrayList();    private List urlsCallback = new ArrayList();    private void uploadFile(){        OssService ossService = new OssService(this, 1);        ossService.initOSSClient();        urls.clear();        for (int i = 0; i position) {                list.remove(position);                notifyItemRemoved(position);                notifyItemRangeChanged(position, list.size());            }        } catch (Exception e) {            e.printStackTrace();        }    }    public GridImageAdapter2(Context context, onAddPicClickListener mOnAddPicClickListener) {        this.mInflater = LayoutInflater.from(context);        this.mOnAddPicClickListener = mOnAddPicClickListener;    }    public GridImageAdapter2(Context context, onAddPicClickListener mOnAddPicClickListener, int selectMax) {        this.mInflater = LayoutInflater.from(context);        this.mOnAddPicClickListener = mOnAddPicClickListener;        this.selectMax = selectMax;    }    public void setSelectMax(int selectMax) {        this.selectMax = selectMax;    }    public void setList(List list) {        this.list = list;    }    public List getData() {        return list == null ? new ArrayList() : list;    }    public void remove(int position) {        if (list != null && position  mOnAddPicClickListener.onAddPicClick());            viewHolder.mIvDel.setVisibility(View.INVISIBLE);        } else {            viewHolder.mIvDel.setVisibility(View.VISIBLE);            viewHolder.mIvDel.setOnClickListener(view -> {                int index = viewHolder.getAdapterPosition();                // 这里有时会返回-1造成数据下标越界,具体可参考getAdapterPosition()源码,                // 通过源码分析应该是bindViewHolder()暂未绘制完成导致,知道原因的也可联系我~感谢                if (index != RecyclerView.NO_POSITION && list.size() > index) {                    list.remove(index);                    notifyItemRemoved(index);                    notifyItemRangeChanged(index, list.size());                }            });            LocalMedia media = list.get(position);            if (media == null                    || TextUtils.isEmpty(media.getPath())) {                return;            }            int chooseModel = media.getChooseModel();            String path;            if (media.isCut() && !media.isCompressed()) {                // 裁剪过                path = media.getCutPath();            } else if (media.isCompressed() || (media.isCut() && media.isCompressed())) {                // 压缩过,或者裁剪同时压缩过,以最终压缩过图片为准                path = media.getCompressPath();            } else {                // 原图                path = media.getPath();            }            Log.i(TAG, "原图地址::" + media.getPath());            if (media.isCut()) {                Log.i(TAG, "裁剪地址::" + media.getCutPath());            }            if (media.isCompressed()) {                Log.i(TAG, "压缩地址::" + media.getCompressPath());                Log.i(TAG, "压缩后文件大小::" + new File(media.getCompressPath()).length() / 1024 + "k");            }            if (!TextUtils.isEmpty(media.getAndroidQToPath())) {                Log.i(TAG, "Android Q特有地址::" + media.getAndroidQToPath());            }            if (media.isOriginal()) {                Log.i(TAG, "是否开启原图功能::" + true);                Log.i(TAG, "开启原图功能后地址::" + media.getOriginalPath());            }            long duration = media.getDuration();            viewHolder.tvDuration.setVisibility(PictureMimeType.isHasVideo(media.getMimeType())                    ? View.VISIBLE : View.GONE);            if (chooseModel == PictureMimeType.ofAudio()) {                viewHolder.tvDuration.setVisibility(View.VISIBLE);                viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds                        (R.drawable.picture_icon_audio, 0, 0, 0);            } else {                viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds                        (R.drawable.picture_icon_video, 0, 0, 0);            }            viewHolder.tvDuration.setText(DateUtils.formatDurationTime(duration));            if (chooseModel == PictureMimeType.ofAudio()) {                viewHolder.mImg.setImageResource(R.drawable.picture_audio_placeholder);            } else {                Glide.with(viewHolder.itemView.getContext())                        .load(PictureMimeType.isContent(path) && !media.isCut() && !media.isCompressed() ? Uri.parse(path)                                : path)                        .centerCrop()                        .placeholder(R.color.app_color_f6)                        .diskCacheStrategy(DiskCacheStrategy.ALL)                        .into(viewHolder.mImg);            }            //itemView 的点击事件            if (mItemClickListener != null) {                viewHolder.itemView.setOnClickListener(v -> {                    int adapterPosition = viewHolder.getAdapterPosition();                    mItemClickListener.onItemClick(v, adapterPosition);                });            }            if (mItemLongClickListener != null) {                viewHolder.itemView.setOnLongClickListener(v -> {                    int adapterPosition = viewHolder.getAdapterPosition();                    mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v);                    return true;                });            }        }        //设置图片宽高比1:1        ViewGroup.LayoutParams layoutParams = viewHolder.mImg.getLayoutParams();//        layoutParams.width = (int) (Common.getScreenWidth(mContext)*0.95);        layoutParams.height = (int) (layoutParams.width );        viewHolder.mImg.setLayoutParams(layoutParams);    }    private OnItemClickListener mItemClickListener;    public interface OnItemClickListener {        void onItemClick(View v, int position);    }    public void setOnItemClickListener(OnItemClickListener l) {        this.mItemClickListener = l;    }    private OnItemLongClickListener mItemLongClickListener;    public void setItemLongClickListener(OnItemLongClickListener l) {        this.mItemLongClickListener = l;    }}
gv_filter_image.xml:(小图标自己上千图网找)
            
OnItemLongClickListener:
package com.example.testcsdnproject.picdemo;import android.view.View;import androidx.recyclerview.widget.RecyclerView;/** * @author:luck * @date:2020-01-13 17:58 * @describe:长按事件 */public interface OnItemLongClickListener {    void onItemLongClick(RecyclerView.ViewHolder holder, int position, View v);}
GlideEngine:(加载引擎)
package com.example.testcsdnproject.picdemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.PointF;import android.graphics.drawable.Drawable;import android.view.View;import android.widget.ImageView;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.core.graphics.drawable.RoundedBitmapDrawable;import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;import com.bumptech.glide.Glide;import com.bumptech.glide.request.RequestOptions;import com.bumptech.glide.request.target.BitmapImageViewTarget;import com.bumptech.glide.request.target.ImageViewTarget;import com.example.testcsdnproject.R;import com.luck.picture.lib.engine.ImageEngine;import com.luck.picture.lib.listener.OnImageCompleteCallback;import com.luck.picture.lib.tools.MediaUtils;import com.luck.picture.lib.widget.longimage.ImageSource;import com.luck.picture.lib.widget.longimage.ImageViewState;import com.luck.picture.lib.widget.longimage.SubsamplingScaleImageView;/** * @author:luck * @date:2019-11-13 17:02 * @describe:Glide加载引擎 */public class GlideEngine implements ImageEngine {    /**     * 加载图片     *     * @param context     * @param url     * @param imageView     */    @Override    public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {        Glide.with(context)                .load(url)                .into(imageView);    }    /**     * 加载网络图片适配长图方案     * # 注意:此方法只有加载网络图片才会回调     *     * @param context     * @param url     * @param imageView     * @param longImageView     * @param callback      网络图片加载回调监听 {link after version 2.5.1 Please use the #OnImageCompleteCallback#}     */    @Override    public void loadImage(@NonNull Context context, @NonNull String url,                          @NonNull ImageView imageView,                          SubsamplingScaleImageView longImageView, OnImageCompleteCallback callback) {        Glide.with(context)                .asBitmap()                .load(url)                .into(new ImageViewTarget(imageView) {                    @Override                    public void onLoadStarted(@Nullable Drawable placeholder) {                        super.onLoadStarted(placeholder);                        if (callback != null) {                            callback.onShowLoading();                        }                    }                    @Override                    public void onLoadFailed(@Nullable Drawable errorDrawable) {                        super.onLoadFailed(errorDrawable);                        if (callback != null) {                            callback.onHideLoading();                        }                    }                    @Override                    protected void setResource(@Nullable Bitmap resource) {                        if (callback != null) {                            callback.onHideLoading();                        }                        if (resource != null) {                            boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),                                    resource.getHeight());                            longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);                            imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);                            if (eqLongImage) {                                // 加载长图                                longImageView.setQuickScaleEnabled(true);                                longImageView.setZoomEnabled(true);                                longImageView.setPanEnabled(true);                                longImageView.setDoubleTapZoomDuration(100);                                longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);                                longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);                                longImageView.setImage(ImageSource.bitmap(resource),                                        new ImageViewState(0, new PointF(0, 0), 0));                            } else {                                // 普通图片                                imageView.setImageBitmap(resource);                            }                        }                    }                });    }    /**     * 加载网络图片适配长图方案     * # 注意:此方法只有加载网络图片才会回调     *     * @param context     * @param url     * @param imageView     * @param longImageView     * @ 已废弃     */    @Override    public void loadImage(@NonNull Context context, @NonNull String url,                          @NonNull ImageView imageView,                          SubsamplingScaleImageView longImageView) {        Glide.with(context)                .asBitmap()                .load(url)                .into(new ImageViewTarget(imageView) {                    @Override                    protected void setResource(@Nullable Bitmap resource) {                        if (resource != null) {                            boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),                                    resource.getHeight());                            longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);                            imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);                            if (eqLongImage) {                                // 加载长图                                longImageView.setQuickScaleEnabled(true);                                longImageView.setZoomEnabled(true);                                longImageView.setPanEnabled(true);                                longImageView.setDoubleTapZoomDuration(100);                                longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);                                longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);                                longImageView.setImage(ImageSource.bitmap(resource),                                        new ImageViewState(0, new PointF(0, 0), 0));                            } else {                                // 普通图片                                imageView.setImageBitmap(resource);                            }                        }                    }                });    }    /**     * 加载相册目录     *     * @param context   上下文     * @param url       图片路径     * @param imageView 承载图片ImageView     */    @Override    public void loadFolderImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {        Glide.with(context)                .asBitmap()                .load(url)                .override(180, 180)                .centerCrop()                .sizeMultiplier(0.5f)                .apply(new RequestOptions().placeholder(R.drawable.picture_image_placeholder))                .into(new BitmapImageViewTarget(imageView) {                    @Override                    protected void setResource(Bitmap resource) {                        RoundedBitmapDrawable circularBitmapDrawable =                                RoundedBitmapDrawableFactory.                                        create(context.getResources(), resource);                        circularBitmapDrawable.setCornerRadius(8);                        imageView.setImageDrawable(circularBitmapDrawable);                    }                });    }    /**     * 加载gif     *     * @param context   上下文     * @param url       图片路径     * @param imageView 承载图片ImageView     */    @Override    public void loadAsGifImage(@NonNull Context context, @NonNull String url,                               @NonNull ImageView imageView) {        Glide.with(context)                .asGif()                .load(url)                .into(imageView);    }    /**     * 加载图片列表图片     *     * @param context   上下文     * @param url       图片路径     * @param imageView 承载图片ImageView     */    @Override    public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {        Glide.with(context)                .load(url)                .override(200, 200)                .centerCrop()                .apply(new RequestOptions().placeholder(R.drawable.picture_image_placeholder))                .into(imageView);    }    private GlideEngine() {    }    private static GlideEngine instance;    public static GlideEngine createGlideEngine() {        if (null == instance) {            synchronized (GlideEngine.class) {                if (null == instance) {                    instance = new GlideEngine();                }            }        }        return instance;    }}
AddArtWorksBean 测试数据的实体类:
package com.example.testcsdnproject.picdemo;import com.google.gson.annotations.SerializedName;import java.io.Serializable;public class AddArtWorksBean implements Serializable {    @SerializedName("artId")    private Long artId;    @SerializedName("artSaleState")    private String artSaleState;    @SerializedName("audioBand")    private String audioBand;    @SerializedName("authorName")    private String authorName;    @SerializedName("authorPortrait")    private String authorPortrait;    @SerializedName("changeSpeech")    private Integer changeSpeech;    @SerializedName("copyright")    private Long copyright;    @SerializedName("copyrightDirectory")    private String copyrightDirectory;    @SerializedName("cover")    private String cover;    @SerializedName("creativeProcess")    private String creativeProcess;    @SerializedName("fodder")    private Integer fodder;    @SerializedName("gatherId")    private Integer gatherId;    @SerializedName("gatherSort")    private String gatherSort;    @SerializedName("gdmoaId")    private Integer gdmoaId;    @SerializedName("id")    private Long id;    @SerializedName("imageHeight")    private Long imageHeight;    @SerializedName("imageWidth")    private Long imageWidth;    @SerializedName("introduce")    private String introduce;    @SerializedName("isAuthor")    private Integer isAuthor;    @SerializedName("isFamous")    private String isFamous;    @SerializedName("isShare")    private Integer isShare;    @SerializedName("material")    private String material;    @SerializedName("name")    private String name;    @SerializedName("organizationUserid")    private Long organizationUserid;    @SerializedName("parentDirectory")    private String parentDirectory;    @SerializedName("publishTime")    private String publishTime;    @SerializedName("releaseSort")    private Integer releaseSort;    @SerializedName("releaseTime")    private String releaseTime;    @SerializedName("secondMaterial")    private String secondMaterial;    @SerializedName("share")    private Integer share;    @SerializedName("shareDirectory")    private Integer shareDirectory;    @SerializedName("speechUrl")    private String speechUrl;    @SerializedName("state")    private Integer state;    @SerializedName("type")    private Integer type;    @SerializedName("url")    private String url;    @SerializedName("userId")    private Long userId;    @SerializedName("videoTime")    private String videoTime;    @SerializedName("viewNumber")    private Integer viewNumber;    @SerializedName("workGiveLike")    private Integer workGiveLike;    @SerializedName("workHeight")    private Long workHeight;    @SerializedName("workTags")    private String workTags;    @SerializedName("workWidth")    private Long workWidth;    @SerializedName("workYear")    private String workYear;    public Long getArtId() {        return artId;    }    public void setArtId(Long artId) {        this.artId = artId;    }    public String getArtSaleState() {        return artSaleState;    }    public void setArtSaleState(String artSaleState) {        this.artSaleState = artSaleState;    }    public String getAudioBand() {        return audioBand;    }    public void setAudioBand(String audioBand) {        this.audioBand = audioBand;    }    public String getAuthorName() {        return authorName;    }    public void setAuthorName(String authorName) {        this.authorName = authorName;    }    public String getAuthorPortrait() {        return authorPortrait;    }    public void setAuthorPortrait(String authorPortrait) {        this.authorPortrait = authorPortrait;    }    public Integer getChangeSpeech() {        return changeSpeech;    }    public void setChangeSpeech(Integer changeSpeech) {        this.changeSpeech = changeSpeech;    }    public Long getCopyright() {        return copyright;    }    public void setCopyright(Long copyright) {        this.copyright = copyright;    }    public String getCopyrightDirectory() {        return copyrightDirectory;    }    public void setCopyrightDirectory(String copyrightDirectory) {        this.copyrightDirectory = copyrightDirectory;    }    public String getCover() {        return cover;    }    public void setCover(String cover) {        this.cover = cover;    }    public String getCreativeProcess() {        return creativeProcess;    }    public void setCreativeProcess(String creativeProcess) {        this.creativeProcess = creativeProcess;    }    public Integer getFodder() {        return fodder;    }    public void setFodder(Integer fodder) {        this.fodder = fodder;    }    public Integer getGatherId() {        return gatherId;    }    public void setGatherId(Integer gatherId) {        this.gatherId = gatherId;    }    public String getGatherSort() {        return gatherSort;    }    public void setGatherSort(String gatherSort) {        this.gatherSort = gatherSort;    }    public Integer getGdmoaId() {        return gdmoaId;    }    public void setGdmoaId(Integer gdmoaId) {        this.gdmoaId = gdmoaId;    }    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public Long getImageHeight() {        return imageHeight;    }    public void setImageHeight(Long imageHeight) {        this.imageHeight = imageHeight;    }    public Long getImageWidth() {        return imageWidth;    }    public void setImageWidth(Long imageWidth) {        this.imageWidth = imageWidth;    }    public String getIntroduce() {        return introduce;    }    public void setIntroduce(String introduce) {        this.introduce = introduce;    }    public Integer getIsAuthor() {        return isAuthor;    }    public void setIsAuthor(Integer isAuthor) {        this.isAuthor = isAuthor;    }    public String getIsFamous() {        return isFamous;    }    public void setIsFamous(String isFamous) {        this.isFamous = isFamous;    }    public Integer getIsShare() {        return isShare;    }    public void setIsShare(Integer isShare) {        this.isShare = isShare;    }    public String getMaterial() {        return material;    }    public void setMaterial(String material) {        this.material = material;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Long getOrganizationUserid() {        return organizationUserid;    }    public void setOrganizationUserid(Long organizationUserid) {        this.organizationUserid = organizationUserid;    }    public String getParentDirectory() {        return parentDirectory;    }    public void setParentDirectory(String parentDirectory) {        this.parentDirectory = parentDirectory;    }    public String getPublishTime() {        return publishTime;    }    public void setPublishTime(String publishTime) {        this.publishTime = publishTime;    }    public Integer getReleaseSort() {        return releaseSort;    }    public void setReleaseSort(Integer releaseSort) {        this.releaseSort = releaseSort;    }    public String getReleaseTime() {        return releaseTime;    }    public void setReleaseTime(String releaseTime) {        this.releaseTime = releaseTime;    }    public String getSecondMaterial() {        return secondMaterial;    }    public void setSecondMaterial(String secondMaterial) {        this.secondMaterial = secondMaterial;    }    public Integer getShare() {        return share;    }    public void setShare(Integer share) {        this.share = share;    }    public Integer getShareDirectory() {        return shareDirectory;    }    public void setShareDirectory(Integer shareDirectory) {        this.shareDirectory = shareDirectory;    }    public String getSpeechUrl() {        return speechUrl;    }    public void setSpeechUrl(String speechUrl) {        this.speechUrl = speechUrl;    }    public Integer getState() {        return state;    }    public void setState(Integer state) {        this.state = state;    }    public Integer getType() {        return type;    }    public void setType(Integer type) {        this.type = type;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public Long getUserId() {        return userId;    }    public void setUserId(Long userId) {        this.userId = userId;    }    public String getVideoTime() {        return videoTime;    }    public void setVideoTime(String videoTime) {        this.videoTime = videoTime;    }    public Integer getViewNumber() {        return viewNumber;    }    public void setViewNumber(Integer viewNumber) {        this.viewNumber = viewNumber;    }    public Integer getWorkGiveLike() {        return workGiveLike;    }    public void setWorkGiveLike(Integer workGiveLike) {        this.workGiveLike = workGiveLike;    }    public Long getWorkHeight() {        return workHeight;    }    public void setWorkHeight(Long workHeight) {        this.workHeight = workHeight;    }    public String getWorkTags() {        return workTags;    }    public void setWorkTags(String workTags) {        this.workTags = workTags;    }    public Long getWorkWidth() {        return workWidth;    }    public void setWorkWidth(Long workWidth) {        this.workWidth = workWidth;    }    public String getWorkYear() {        return workYear;    }    public void setWorkYear(String workYear) {        this.workYear = workYear;    }}
OssService :(OSS上传服务)
package com.example.testcsdnproject.picdemo;import android.content.Context;import android.net.Uri;import android.text.TextUtils;import android.util.Log;import com.alibaba.sdk.android.oss.ClientConfiguration;import com.alibaba.sdk.android.oss.ClientException;import com.alibaba.sdk.android.oss.OSS;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.common.auth.OSSCredentialProvider;import com.alibaba.sdk.android.oss.common.auth.OSSPlainTextAKSKCredentialProvider;import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;import com.alibaba.sdk.android.oss.model.PutObjectRequest;import com.alibaba.sdk.android.oss.model.PutObjectResult;import org.json.JSONException;import org.json.JSONObject;import java.io.File;import java.util.HashMap;import java.util.List;import java.util.Random;public class OssService {    private OSS oss;    private Context context;    private ProgressCallback progressCallback;    public final static String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";    public final static String accessKeyId = "自己填参数";//    public final static String accessKeySecret = "自己申请参数";    public final static String bucketName = "testCsdn";    public int mType;    public OssService(Context context, int type) {        this.context = context;        this.mType = type;    }    public void initOSSClient() {        //OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider("", "", "");        //这个初始化安全性没有Sts安全,如需要很高安全性建议用OSSStsTokenCredentialProvider创建(上一行创建方式)多出的参数SecurityToken为临时授权参数        final OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);        final ClientConfiguration conf = new ClientConfiguration();        conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒        conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒        conf.setMaxConcurrentRequest(9); // 最大并发请求数,默认5个        conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次        // oss为全局变量,endpoint是一个OSS区域地址        oss = new OSSClient(context, endpoint, credentialProvider, conf);    }    public void beginupload(final Context context, String filename, String path, String osspath, final String callbackbody, String houzhuiming) {        //通过填写文件名形成objectname,通过这个名字指定上传和下载的文件        String objectname = filename;        if (objectname == null || objectname.equals("")) {//            ToastUtils.sh("文件名不能为空");            return;        }        //下面3个参数依次为bucket名,Object名,上传文件路径        Log.e("colin: ", callbackbody + "=========" + osspath + objectname + getRandomString() + houzhuiming);        PutObjectRequest put = new PutObjectRequest(bucketName, osspath + objectname +getRandomString() + houzhuiming, path);        if (path == null || path.equals("")) {            return;        }        put.setCallbackParam(new HashMap() {            {                put("callbackUrl", "拼接服务器域名"/*AppConstant.OSS_IMAGE_URL*/);                put("callbackBody", callbackbody);            }        });        // 异步上传,可以设置进度回调        put.setProgressCallback(new OSSProgressCallback() {            @Override            public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {//                LogUtil.d("currentSize: " + currentSize + " totalSize: " + totalSize);                double progress = currentSize * 1.0 / totalSize * 100.f;                if (progressCallback != null) {                    progressCallback.onProgressCallback(progress);                }            }        });        @SuppressWarnings("rawtypes")        OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback() {            @Override            public void onSuccess(PutObjectRequest request, PutObjectResult result) {                Log.d("colin", "UploadSuccess");                // 只有设置了servercallback,这个值才有数据                String serverCallbackReturnJson = result.getServerCallbackReturnBody();                Log.d("colin", serverCallbackReturnJson);                try {                    JSONObject jsonObject = new JSONObject(serverCallbackReturnJson);                    String avatar_url = "";                    switch (mType) {                        case 1:                            avatar_url = jsonObject.optString("avatar_url");                            break;                        case 14:                            avatar_url = jsonObject.optString("avatar_url");                            break;                        case 3:                            avatar_url = jsonObject.optString("imageUrl");                            break;                        case 6:                            avatar_url = jsonObject.optString("artShowCoverUrl");                            break;                        case 9:                            avatar_url = jsonObject.optString("photoUrl");                            break;                        case 11:                            avatar_url = jsonObject.optString("videoCoverUrl");                            break;                        case 2:                            avatar_url = "";                            break;                    }                    mOnCallbackClickListener.onCallBack(avatar_url,serverCallbackReturnJson);                } catch (JSONException e) {                    e.printStackTrace();                }            }            @Override            public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {                // 请求异常//                if (clientExcepion != null) {                    // 本地异常如网络异常等//                    LogUtil.e("UploadFailure:表示向OSS发送请求或解析来自OSS的响应时发生错误。\n" +//                            "  *例如,当网络不可用时,这个异常将被抛出");                    clientExcepion.printStackTrace();                }                if (serviceException != null) {                    // 服务异常//                    LogUtil.e("UploadFailure:表示在OSS服务端发生错误");                    Log.e("ErrorCode", serviceException.getErrorCode());                    Log.e("RequestId", serviceException.getRequestId());                    Log.e("HostId", serviceException.getHostId());                    Log.e("RawMessage", serviceException.getRawMessage());                }            }        });        //task.cancel(); // 可以取消任务//        task.waitUntilFinished(); // 可以等待直到任务完成    }    public ProgressCallback getProgressCallback() {        return progressCallback;    }    public void setProgressCallback(ProgressCallback progressCallback) {        this.progressCallback = progressCallback;    }    public interface ProgressCallback {        void onProgressCallback(double progress);    }    private onCallbackClickListener mOnCallbackClickListener;    public interface onCallbackClickListener {        void onCallBack(String imageurl,String json);    }    public void setCallbackClickListener(onCallbackClickListener clickListener) {        this.mOnCallbackClickListener = clickListener;    }    /*----------------------  分割线 -------------------------*/    private onCallbackVideoClickListener mOnCallbackVideoClickListener;    public interface onCallbackVideoClickListener {        void onCallBackVideo(String imageurl,String coverUrl,String json);    }    public void setCallbackVideoClickListener(onCallbackVideoClickListener clickListener) {        this.mOnCallbackVideoClickListener = clickListener;    }    /*----------------------  分割线 -------------------------*/    /**     * 阿里云OSS上传(默认是异步多文件上传)     * 布展上传封面     * @param urls     */    public void ossUpload(final List urls) {        if (urls.size()                                         

上一篇:怎么查服务器占用内存?

下一篇:网站建设该怎么做