Forráskód Böngészése

companion: fix multipart upload (#2490)

Ifedapo .A. Olarewaju 4 éve
szülő
commit
84718fe122
1 módosított fájl, 19 hozzáadás és 19 törlés
  1. 19 19
      packages/@uppy/companion/src/server/Uploader.js

+ 19 - 19
packages/@uppy/companion/src/server/Uploader.js

@@ -5,7 +5,6 @@ const uuid = require('uuid')
 const isObject = require('isobject')
 const isObject = require('isobject')
 const validator = require('validator')
 const validator = require('validator')
 const request = require('request')
 const request = require('request')
-const FormData = require('form-data')
 const emitter = require('./emitter')
 const emitter = require('./emitter')
 const serializeError = require('serialize-error')
 const serializeError = require('serialize-error')
 const { jsonStringify, hasMatch } = require('./helpers/utils')
 const { jsonStringify, hasMatch } = require('./helpers/utils')
@@ -471,25 +470,24 @@ class Uploader {
     const httpMethod = (this.options.httpMethod || '').toLowerCase() === 'put' ? 'put' : 'post'
     const httpMethod = (this.options.httpMethod || '').toLowerCase() === 'put' ? 'put' : 'post'
     const headers = headerSanitize(this.options.headers)
     const headers = headerSanitize(this.options.headers)
     const reqOptions = { url: this.options.endpoint, headers, encoding: null }
     const reqOptions = { url: this.options.endpoint, headers, encoding: null }
+    const httpRequest = request[httpMethod]
     if (this.options.useFormData) {
     if (this.options.useFormData) {
-      const form = new FormData()
-      for (const property in this.options.metadata) {
-        form.append(property, this.options.metadata[property])
-      }
-      form.append(this.options.fieldname, file, {
-        filename: this.uploadFileName,
-        contentType: this.options.metadata.type
-      })
-      form.getLength((error, length) => {
-        if (error) {
-          logger.error(error, 'upload.multipart.size.error')
-          this.emitError(error)
-          return
+      reqOptions.formData = Object.assign(
+        {},
+        this.options.metadata,
+        {
+          [this.options.fieldname]: {
+            value: file,
+            options: {
+              filename: this.uploadFileName,
+              contentType: this.options.metadata.type
+            }
+          }
         }
         }
-        reqOptions.headers['content-length'] = length
-        const req = request[httpMethod](reqOptions, (error, response, body) => this._onMultipartComplete(error, response, body, bytesUploaded))
-        // @ts-ignore
-        req._form = form
+      )
+
+      httpRequest(reqOptions, (error, response, body) => {
+        this._onMultipartComplete(error, response, body, bytesUploaded)
       })
       })
     } else {
     } else {
       fs.stat(this.path, (err, stats) => {
       fs.stat(this.path, (err, stats) => {
@@ -502,7 +500,9 @@ class Uploader {
         const fileSizeInBytes = stats.size
         const fileSizeInBytes = stats.size
         reqOptions.headers['content-length'] = fileSizeInBytes
         reqOptions.headers['content-length'] = fileSizeInBytes
         reqOptions.body = file
         reqOptions.body = file
-        request[httpMethod](reqOptions, (error, response, body) => this._onMultipartComplete(error, response, body, bytesUploaded))
+        httpRequest(reqOptions, (error, response, body) => {
+          this._onMultipartComplete(error, response, body, bytesUploaded)
+        })
       })
       })
     }
     }
   }
   }