загрузка файлов на s3 с использованием coffeescript - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь загрузить файлы, используя предварительно подписанный URL-адрес в корзину s3 . Я получаю предварительно подписанный URL, нажав конечную точку отдыха, которая возвращает json с необходимыми данными.

Теперь я должен взять это json и получить входной файл от пользователя, чтобы загрузить файл.

Вот код, который я написал в coffeescript. Я беру у пользователя входной файл obj и сохраняю его в объекте файла, а затем вызываю предварительно подписанный API для получения json.

uploadFile: (e) =>
      files_container = e.target.form.elements[0].files
      if files_container.length > 0
        @file_obj = files_container[0]
        console.log(@file_obj)
        result = ""
        $.ajax
          type: 'GET'
          url: '/api/upload/get_lead_upload_url'
          dataType: "json"
          success: (response) ->
            console.log(response)

Ниже я должен написать этот python код в coffeescript для загрузки файла.

with open(object_name, 'rb') as f:
    files = {'file': (object_name, f)}
    http_response = requests.post(response['url'], data=response['fields'], files=files)
# If successful, returns HTTP status code 204

Ниже приведена часть, в которой я ошибаюсь при создании полезной нагрузки, такой как код python.

   formdata = new FormData
    formdata = response.fields
    formdata['file']= {@file_obj['name'], @file_obj}
    console.log(formdata)

Запрос на публикацию дает мне 403 запрещённая ошибка.

            $.ajax
              type:'POST'
              dataType: "jsonp"
              url: response.url
              headers: {'Access-Control-Allow-Origin': '*'}
              data: formdata
              success: (uploadResponse) -> 
                console.log(uploadResponse)

              error: (uploadResponse) -> 
                console.log('error')
                console.log(uploadResponse)

          error: (response) ->
            console.log('error')
...