Я пытаюсь загрузить файлы, используя предварительно подписанный 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')