uniapp-文件请求方式

第一种  ajax请求方式

uni.request(OBJECT)

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

/* 
我们可以通过简单的分装类实现请求方式 
 @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 参数说明

参数名 类型 必填 说明 平台差异说明
url String 开发者服务器 url  
files Array 需要上传的文件列表。使用 files 时,filePath 和 name 不生效。 5+App
fileType String 见平台差异说明 文件类型,image/video/audio 仅支付宝小程序,且必填。
filePath String 要上传文件资源的路径。  
name String 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容  
header Object HTTP 请求 Header, header 中不能设置 Referer。  
formData Object HTTP 请求中其他额外的 form data  
success Function 接口调用成功的回调函数  
fail Function 接口调用失败的回调函数  
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
/* 
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
	})
})
发布了29 篇原创文章 · 获赞 4 · 访问量 3597

猜你喜欢

转载自blog.csdn.net/qq_37564189/article/details/103928812
今日推荐