在uniapp中使用文件上传,一般使用uni.uploadFile
,下面是一个单文件上传案例
uni.uploadFile({
url: uploadUrl,
name: "file", // 上传的file的名称
formData: formData, // 除了文件内容的其他需要formdata的数据,不要再外面自定义formData来传,直接就是一个js对象就行
file: file, // 上传的单文件内容File对象
header: {
...requestHeader,
"X-Requested-Session": uni.getStorageSync("sessionWsid")
},
success: response => {
// 上传成功
},
fail: error => {
// 上传失败
}
})
但是一开始还以为uploadFile无法上传FormData,于是自己找了一个往上的,就是通过字符串的形式自己去拼接一个formdata的对象,利用自定义的分隔符号,通过将文件内容进行拼接来获取拼接成一个formdata的对象,下面是拼接的方法。
使用XXX
进行分隔参数,这里有个地方注意,就是在formdata的结尾的地方要使用--
来标记结尾,并且在XXX
作为分割的开始使用--
开始。字符串的数据要添加""
字符的符号。
const formdata = (properties: string, pdfData: any, fileName: string) => {
let result = ""
result +=
"\r\n--XXX" + "\r\nContent-Disposition: form-data; name=\"" + "properties" + "\"" + "\r\n" + "\r\n" + properties
result +=
"\r\n--XXX" +
"\r\nContent-Disposition: form-data; name=\"" +
"file" +
"\"" +
"; " +
"filename=" +
"\"" +
fileName +
"\"" +
"\rContent-Type: application/pdf" +
"\r\n" +
"\r\n" +
pdfData
return result + "\r\n--XXX--"
}