uniapp上传图片文件到阿里云OSS经验总结

本文介绍了如何配置阿里云OSS服务进行文件上传,包括后端签名、前端调用和小程序的白名单设置。详细阐述了上传流程,如创建签名接口、设置上传域名白名单,并提供了uniapp的上传文件示例代码,帮助开发者实现安全、高效的文件上传操作。
摘要由CSDN通过智能技术生成

1.配置Bucket跨域(一般是后端干,嘿嘿)

在这里插入图片描述
了解一下后端的 配置流程

服务器端做签名,前端携带签名直接将图片等资源上传OSS
优点:安全、高效、优雅、与现有服务器不冲突无影响,业务无限发展也毫不担心OSS性能问题。
核心3步骤:
1、开通阿里云OSS服务 做好相关配置 拿到相关签名数据
2、后台服务端创建签名接口
3、前端选择图片、获取签名、上传OSS

但小程序端,前端需要配置上传域名白名单《小程序配置域名白名单

2.实践方案Demo进行上传测试

  • 下载应用服务器代码
  • 将文件解压,并打开upload.js文件
  • 修改upload.js中的配置信息。
  • accessId : 设置你的AccessKeyId。
  • accessKey : 设置你的AessKeySecret。
  • host:格式为bucketname.endpoint,例如bucket-name.oss-cn-hangzhou.aliyuncs.com。关于Endpoint的介绍,请参见Endpoint访问域名
  • expiration:设置Policy的失效时间,如果超过失效时间,就无法通过此Policy上传文件

3.进行上传测试

4.获取上传需要的签名(signature)和加密策略(policy)

5.使用uniapp上传文件

uni.chooseImage({
				count: 1, //默认9
				sizeType: ['compressed'],
				sourceType: ['album'],
				success: res => {
					let tiemr = new Date();
					let address = tiemr.getFullYear() + '' + (tiemr.getMonth() + 1) + '' + tiemr.getDate();
					address = 'zskp/userHead/' + address + '/';
					var imageSrc = res.tempFilePaths[0];
					let str = res.tempFilePaths[0].substr(res.tempFilePaths[0].lastIndexOf('.'));
					let nameStr = address + tiemr.getTime() + str;
					let ossUrl = 'http://xxx.xxxxxxxxxxxxxxxxxxxxxx.xxx/';
					uni.uploadFile({
						url: ossUrl,//输入你的bucketname.endpoint
						filePath: imageSrc,
						fileType: 'image',
						name: 'file',
						formData: {
							name: nameStr,
							key: nameStr,
							policy: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx', // 输入你获取的的policy
							OSSAccessKeyId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx', // 输入你的AccessKeyId
							success_action_status: '200', // 让服务端返回200,不然,默认会返回204
							signature: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx' // 输入你获取的的signature
						},
						success: res => {
							if(res.statusCode == '200'){
								consonle.log(ossUrl + nameStr);
							}else{
								consonle.log(res);
							}
						}
					});
				}
			});

上传成功的状态码为200时,则上传成功,如果未成功,请检查对应bucket是否设置跨域,已及AccessKeyId和签名(signature)和加密策略(policy)是否填写正确。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值