2017-01-10 5 views
0

Я пытаюсь обработать файл из запроса prototype.js Ajax, но его не работает. Данные не поступают в контроллер ($ _FILES).Загрузить/обработать файл из запроса Ajax в Prototype js

Я добавил один шаг в Checkout в magento и хочу загрузить файл, чтобы перейти к следующему шагу.

Я также попытался использовать код ниже.

var request = new Ajax.Request(
       this.saveUrl, 
       { 
        method: 'post', 
        requestHeaders: {"X-Prototype-Version": null}, 
        contentType: 'multipart/form-data', 
        onComplete: this.onComplete, 
        onSuccess: this.onSave, 
        onFailure: checkout.ajaxFailure.bind(checkout), 
        postBody: formData, 
       } 
      ); 

Пожалуйста, помогите мне здесь.

ответ

0

Извините, что сообщите, но загрузка файлов не будет такой простой через ajax.

При отправке через ajax поля ввода файла либо пропущены, либо вы получите только имя файла (вместо данных файла).

Однако есть возможность отправлять двоичные данные, но это требует другого подхода.

Используя API-интерфейс HTML5 File/FileReader, вы можете прочитать файл в javascript, а затем поместить содержимое файла в тело вашего запроса.

new Ajax.Request('/url.php?rawupload=1&id='+$F('id')+'&label='+label, 
{ 
    'method':'post', 
    'postBody':fileobject, 
    'onSuccess':function() { alert('success'); } 
}); 

Вам нужно будет поместить поля формы в параметры GET, чтобы они передавались в ваш PHP-скрипт.

В РНР скрипт содержимое файла будет доступен как этот

$file = file_get_contents('php://input'); 

$file будет содержать содержимое загруженного файла, и вы можете записать его в файловой системе или прочитать содержимое, и т.д.

Смежные вопросы