uniapp-上传图片、上传视频

本文详细介绍了如何在uniapp中利用chooseImage和chooseVideo API选择并上传图片和视频,包括代码示例及上传失败处理。展示了选择图片和视频的流程,并提到了uni.chooseMedia的整合使用。
摘要由CSDN通过智能技术生成

基于 uniapp 的应用上传图片/视频 资源的实现:

功能涉及的主要 uniapp API 如下:

1.选择图片uni.chooseImage(OBJECT) | uni-app官网

2.选择视频uni.chooseVideo(OBJECT) | uni-app官网

3.上传文件uni.uploadFile(OBJECT) | uni-app官网

下面分别贴出示例代码:

上传图片

        // 上传图片
		async chooseImages() {
			uni.showLoading({
				mask: true,
				title: '上传中...'
			})
			// uploadFile 存储需要上传的文件
			let uploadFile = ''
			// 1.选择图片(这里只能单选)
			const res = await uni.chooseImage({
				count: 1,	// 最多可以选择的图片张数,默认9
				// sizeType: ['compressed'],		// original 原图,compressed 压缩图,默认二者都有
				sourceType: ['album'],		// album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
			});
			// console.log('res:', res);
			if(res.length < 2) {		// 小于2则没有选择图片
				uni.hideLoading()
				return
			}
			uploadFile = res[1].tempFilePaths[0];	// 拿到选择的文件
			var that1 = this;
			// 2.将选择的图片上传到目标服务器
			const arr = await uni.uploadFile({
				// 需要上传的地址
				url: that1.vuex_uploadAction,
				// filePath  需要上传的文件
				filePath: uploadFile,
				name: 'file',
				timeout: 2000,		// 超时时间
				header: {		// HTTP 请求 Header, header 中不能设置 Referer。
					token: that1.vuex_token		// 挂载请求头为用户的 token
				},
			});
			// console.log(arr);
			let data = JSON.parse(arr[1].data)
			console.log('data:', data);
			if(data.code !== 1) {	// 图片上传失败了
				uni.hideLoading()
				that1.$u.toast(data.msg)
				return
			}
			// 上传成功(把上传成功后的文件路径 push 到页面需要显示的图片数据列表中)
			that1.fileList.push(data.data.fullurl)
			that1.formData.photo_url.push(data.data.url)
			// console.log(that1.fileList);
			uni.hideLoading()
		},

注:示例代码已封装为一个方法,可直接调用,需要自定义之处可自行参照 API 文档修改,比如从相册选图还是打开相机拍照、可上传的图片数量等

上传视频

        // 上传视频
		async chooseVideo() {
			uni.showLoading({
				mask: true,
				title: '上传中...'
			})
			// uploadFile 存储需要上传的文件
			let uploadFile = ''
			// 1.选择要上传的视频
			const res = await uni.chooseVideo({
				maxDuration: 60,		// 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
				sourceType: ['album'],		// album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
			});
			uploadFile = res[1].tempFilePath;
			// console.log(uploadFile);
			var that2 = this;
			// 2.上传所选视频到服务器
			const arr = await uni.uploadFile({
				// 需要上传的地址
				url: that2.vuex_uploadAction,
				// filePath  需要上传的文件
				filePath: uploadFile,
				name: 'file',
				header: {
					token: that2.vuex_token		// 挂载请求头为用户的 token
				},
			});
			let data = JSON.parse(arr[1].data)
			console.log('data:', data);
			if(data.code !== 1) {		// 视频上传失败了
				uni.hideLoading()
				that1.$u.toast(data.msg)
				return
			}
			// 上传成功(把上传成功后的文件路径 push 到页面需要显示的视频数据列表中)
			that2.uploadVideoUrl = data.data.fullurl
			that2.formData.video_url = data.data.url
			uni.hideLoading()
		}

扩展

uniapp 还整合提供了上传媒体文件(图片/视频)的 API: uni.chooseMedia 可用于上传图片和视频。若有兴趣可自行打开链接测试使用。

Uniapp中,可以使用uni.uploadFile()方法来实现视频上传功能。你可以参考以下代码示例: ```javascript // 选择视频文件 uni.chooseVideo({ sourceType: ['album', 'camera'], // 从相册或相机选择 maxDuration: 60, // 视频最长拍摄时间,单位秒 camera: 'back', // 使用后置摄像头 success: function(res) { // 选择成功,开始上传文件 uni.showLoading({ title: '上传中...' }); uni.uploadFile({ url: 'https://your-upload-url.com/upload', // 上传地址 filePath: res.tempFilePath, // 要上传的文件路径 name: 'file', // 上传文件对应的 key 值 success: function(uploadRes) { // 上传成功处理逻辑 console.log(uploadRes); uni.showToast({ title: '上传成功' }); }, fail: function(error) { // 上传失败处理逻辑 console.log(error); uni.hideLoading(); uni.showToast({ title: '上传失败' }); }, complete: function() { uni.hideLoading(); } }); } }); ``` 以上代码中,uni.chooseVideo()方法用于选择视频文件,可以从相册或相机中选择。在选择成功后,会调用uni.uploadFile()方法来实现文件上传功能。需要注意的是,你需要替换掉示例中的上传地址,以及根据需求对参数进行适当修改。这样就可以实现在Uniapp上传视频的功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [uniapp-上传图片上传视频](https://blog.csdn.net/qq_43551801/article/details/123528864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [uniapp视频、音频上传的方法](https://blog.csdn.net/qq_70703397/article/details/130351635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值