Android开发之--上传图片到七牛云存储


前段时间做个人中心页面时,添加了头像上传功能,当时使用的是七牛的云存储,个人感觉还不错。所以就总结一下Android使用七牛云存储的图片上传,具体的图片选择过程可参见我的另一篇文章Android之图片选择与裁剪,今天我们重点要说的是七牛的图片上传功能。

在AndroidManifest.xml中添加访问存储卡和网络的权限:
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
 
  • 1
  • 2
  • 1
  • 2
添加图片上传所需要的jar包(这一点比较坑,记得当时官网上下载的不能用)

下载: 七牛图片上传需要的Jar包

代码实现:

在需要图片上传的地方调用下面的方法:

/**
 * 上传图片到七牛
 * @param filePath 要上传的图片路径
 * @param token 在七牛官网上注册的token
 */
private void uploadImageToQiniu(String filePath, String token) {
    UploadManager uploadManager = new UploadManager();
    // 设置图片名字
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    String key = "icon_" + sdf.format(new Date());
    uploadManager.put(filePath, key, token, new UpCompletionHandler() {
        @Override
        public void complete(String key, ResponseInfo info, JSONObject res) {
            // info.error中包含了错误信息,可打印调试
            // 上传成功后将key值上传到自己的服务器
        }
    }, null);
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

需要注意的是,不要再客户端直接引用token,否则可能导致token泄漏,造成不必要的损失。

正确的图片上传流程:

  1. 访问自己的服务器获取token;
  2. 使用获取的token上传图片到七牛;
  3. 从七牛获取上传后的图片的存储路径(也就是complete方法中的key参数),再上传到自己的服务器进行存储,至此图片上传才算完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在uni-app中上本地图片到七牛云,可以按照以下步骤进行: 1. 在七牛云上创建一个存储空间,并获取该空间的Access Key和Secret Key。 2. 安装uni-app的官方插件uni-upload,并在项目根目录下的vue.config.js中进行配置,添加以下代码: ``` const qiniuUploader = require('uniapp-qiniu-sdk'); const qiniuOptions = { region: 'your region', // 七牛云存储区域 uptokenURL: 'your uptokenURL', // 服务端提供获取上凭证的接口 domain: 'your domain', // 七牛云存储空间绑定的域名 }; module.exports = { configureWebpack: { plugins: [ { apply: (compiler) => { compiler.hooks.afterEmit.tapPromise('afterEmit', (compilation) => { return new Promise((resolve, reject) => { qiniuUploader.upload(compilation.assets['your upload file name'].existsAt, 'your key', qiniuOptions, (res) => { console.log(res); resolve(); }, (error) => { console.log(error); reject(); }); }); }); }, }, ], }, }; ``` 3. 在需要上图片的页面中,添加以下代码: ``` <template> <view> <input type="file" @change="upload"> </view> </template> <script> export default { methods: { upload(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { const base64Img = reader.result; qiniuUploader.upload(base64Img, (res) => { console.log(res); }, (error) => { console.log(error); }); }; }, }, }; </script> ``` 其中,首先使用FileReader将本地图片转换为base64格式,然后调用qiniuUploader.upload函数上图片。 以上就是在uni-app中上本地图片到七牛云的基本步骤,具体使用细节可以根据实际情况进行调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值