电商项目文件上传

上传头像

接口地址:https://www.zhaoapi.cn/file/upload

返回格式:json

请求方式:get/post

接口备注:上传头像接口(file路径修改)

请求参数说明:

名称

类型

必填

说明

uid

string

用户id

file

File

文件

代码

1.apI接口声明

@Multipart

@POST("file/upload")

Call<Bean> upLoad(@Query("uid") String uid, @Part MultipartBody.Part part);

 

2.代码构造 MultipartBody.Part

LoginApi loignApi = RetrofitManager.getDefault().create(LoginApi.class);

File file = getFile();

//RequestBody封装了文件和文件的类型

RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);

// MultipartBody.Part封装了接受的key和文件名字和RequestBody

MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);

Call<Bean> login = loignApi.upLoad("71", part);

 3.本地图片资源转换成File

public class Utils {

    /**
     * bitmap转file
     *
     * @param bitmap
     * @return
     */
    public static File compressImage(Bitmap bitmap) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
        int options = 100;
        while (baos.toByteArray().length / 1024 > 500) {  //循环判断如果压缩后图片是否大于500kb,大于继续压缩
            baos.reset();//重置baos即清空baos
            options -= 10;//每次都减少10
            bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中
            long length = baos.toByteArray().length;
        }
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date(System.currentTimeMillis());
        String filename = format.format(date);
        File file = new File(Environment.getExternalStorageDirectory(), filename + ".png");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            try {
                fos.write(baos.toByteArray());
                fos.flush();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        recycleBitmap(bitmap);
        return file;
    }

    private static void recycleBitmap(Bitmap bitmap) {
        if (bitmap != null) {
            bitmap.recycle();
        }
    }
}

 

备注:

1.上传文件需要制定文件对应的的key(服务器根据这个key接收文件):

这个接口key的值为“file”

2.上传文件需要制定文件的名字

3.上传文件需要指定文件的类型

4.参数类型为 MultipartBody.Part  使用@Part修饰

---------------------------------------

多文件上传参考  (可行)

https://www.jb51.net/article/122419.htm

Uri转化成File (用来解决相册选择视频拿到的是Uri的问题)

https://blog.csdn.net/jenly121/article/details/48373861

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值