uniapp-文件请求方式

第一种  ajax请求方式

uni.request(OBJECT)

参数名类型必填默认值说明平台差异说明
urlString 开发者服务器接口地址 
dataObject/String/ArrayBuffer 请求的参数App(自定义组件编译模式)不支持ArrayBuffer类型
headerObject 设置请求的 header,header 中不能设置 Referer。 
methodStringGET有效值详见下方说明 
timeoutNumber30000超时时间,单位 ms支付宝小程序
dataTypeStringjson如果设为 json,会尝试对返回的数据做一次 JSON.parse 
responseTypeStringtext设置响应的数据类型。合法值:text、arraybufferApp和支付宝小程序不支持
sslVerifyBooleantrue验证 ssl 证书仅App安卓端支持(HBuilderX 2.3.3+)
successFunction 收到开发者服务成功返回的回调函数 
failFunction 接口调用失败的回调函数 
completeFunction 接口调用结束的回调函数(调用成功、失败都会执行)

/* 
我们可以通过简单的分装类实现请求方式 
 @params method 请求方式  默认 post
 @params url 请求地址  默认 post
 @params data 请求参数
 @return  返回一个promise对象
 */
export const ajax= (method = 'post', url, data = {}) => new Promise((resolve) => {
	/* 在这里我们可以做一些拦截处理
	 比如 验证  token  全局参数等等
	 */
	let options = {};
	/* 发起请求 */
	uni.request({
		method,
		success: (res) => {
			/* 这里可以做一些后台结果的数据校验 */
			resolve(res)
		},
		fail: ({
			errMsg
		}) => resolve(fail(errMsg)),
		...options
	})
})

 第二种 : 文件上传 ajax 可以实现单图上传和多图上传

uni.uploadFile(OBJECT)

将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data
如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。另外选择和上传非图像、视频文件参考:https://ask.dcloud.net.cn/article/35547

在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。

OBJECT 参数说明

参数名类型必填说明平台差异说明
urlString开发者服务器 url 
filesArray需要上传的文件列表。使用 files 时,filePath 和 name 不生效。5+App
fileTypeString见平台差异说明文件类型,image/video/audio仅支付宝小程序,且必填。
filePathString要上传文件资源的路径。 
nameString文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 
headerObjectHTTP 请求 Header, header 中不能设置 Referer。 
formDataObjectHTTP 请求中其他额外的 form data 
successFunction接口调用成功的回调函数 
failFunction接口调用失败的回调函数 
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
/* 
fromData 多文件提交
 @params url  请求的地址
 @params data 请求所带参数
 */
export const submitFormdata = (url, data = null) => new Promise((resolve) => {
	/* 规定上传文件的键值做参数处理 */
	// 比如
	// data = {
	// 	files : [],
	// 	...params,
	// }
	/* 把对应的数据处理归位 */
	/* 这里有个要注意
	虽然 填写了 files uniapp不会去拿 name 和filePath
	但 uploadFile 的 name 和 filePath 必填 不然会报错
	 */
	let files = [];
	for (let key in data.files) {
		files.push({
			name: key,
			uri: data.files[key]
		});
	}
	delete data.files;
	options.formData = data;
	options.files = files;
	uni.uploadFile({
		success: ({
			statusCode,
			data
		}) => resolve(success(statusCode, data)),
		fail: ({
			errMsg
		}) => resolve(fail(errMsg)),
		filePath: '',
		name: '',
		...options
	})
})

 

 

/* 
formdata 单文件上传
@params filePath 上传文件的参数判读
@params url 上传URL地址
*/
export const uploadFile = (fileConfig = {filePath: '',fileName : file}, url = config.upload_url) => new Promise((resolve) => {
	/* 提交校验参数判读 */
	options.filePath = fileConfig.filePath;
	options.name = fileConfig.fileName;;
	uni.uploadFile({
		success: ({
			statusCode,
			data
		}) => resolve(success(statusCode, data)),
		fail: ({
			errMsg
		}) => resolve(fail(errMsg)),
		...options
	})
})

 

    原文作者:陈小白_weilin
    原文地址: https://blog.csdn.net/qq_37564189/article/details/103928812
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞