Как я могу установить обертку данные из FormData?

голоса
0

Как я могу установить обертку данные из FormData?

Я использую CarrierWave в Rails.
Я звоню WebAPI от AJAX.

Эта команда была успешной.

curl -X POST \
https://site-url/api/books/ \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F 'book[title]=test' \
-F book[image]=@kindle_3_0_library_ipad_iphone.jpg \
-F 'book[genre_id]=1'

Это development.log в то время.

Parameters: {book=>{title=>test, image=>#<ActionDispatch::Http::UploadedFile:0x0000000005f1d790 @tempfile=#<Tempfile:/tmp/RackMultipart20181016-37646-65mtjc.jpg>, @original_filename=kindle_3_0_library_ipad_iphone.jpg, @content_type=image/jpeg, @headers=Content-Disposition: form-data; name=\book[image]\; filename=\kindle_3_0_library_ipad_iphone.jpg\\r\nContent-Type: image/jpeg\r\n>, genre_id=>1}}

Этот код не удается.

var request = new FormData();
request.append('title', title);
request.append('image', imageFile, imageFile.name);
request.append('genre_id', 1);

Это development.log в то время.

Parameters: {title=>test, image=>#<ActionDispatch::Http::UploadedFile:0x00007f01dc083240 @tempfile=#<Tempfile:/tmp/RackMultipart20181016-37646-3zmceu.jpg>, @original_filename=41fQlZLtDgL._SX337_BO1,204,203,200_.jpg, @content_type=image/jpeg, @headers=Content-Disposition: form-data; name=\image\; filename=\41fQlZLtDgL._SX337_BO1,204,203,200_.jpg\\r\nContent-Type: image/jpeg\r\n>, genre_id=>1}

Другие пытались это.

var request = new Object();
request.book = new FormData();
request.book.append('title', title);
request.book.append('image', imageFile, imageFile.name);
request.book.append('genre_id', 1);

Это development.log в то время.

Parameters: {object Object=>nil}

Я не знаю , как установить параметры , которые могут быть сохранены.
Спасибо

Задан 20/10/2018 в 05:02
источник пользователем
На других языках...                            


2 ответов

голоса
0

Эта проблема решена.

request.append('book[title]', title);
Ответил 20/10/2018 в 11:52
источник пользователем

голоса
0

Данные Форма должна иметь заголовок с multipart/form-data.

const formData = new FormData();
const config = {
  headers: {
    'content-type': 'multipart/form-data'
  }
}

axios.post("/URL", formData, config)
    .then(...)

Эта ссылка также о том, что совсем другой вопрос. ActiveStorage и загрузка изображений

Ответил 20/10/2018 в 06:02
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more