uniapp使用uni.uploadFile上传单文件内容

发布时间 2024-01-04 13:51:20作者: 乌拉小考

在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--"
}