Как загрузить строку в виде файла с помощью jQuery или других JS Framework - PullRequest
11 голосов
/ 10 июня 2010

Используя javascript, у меня есть файл в строке (полученный с помощью запроса ajax).

Как загрузить его в виде файла на сервер другим AJAX-запросом?

Ответы [ 2 ]

16 голосов
/ 10 июня 2010

Вам нужно установить заголовок запроса Content-type на multipart/form-data и немного поиграть с форматом, Я написал это на обычном JavaScript (tm), но вы могли бы легко переделать его длябиблиотека:

РЕДАКТИРОВАТЬ: выпил мой кофе, поэтому изменил его для jQuery (версия без библиотеки здесь ):

// Define a boundary, I stole this from IE but you can use any string AFAIK
var boundary = "---------------------------7da24f2e50046";
var body = '--' + boundary + '\r\n'
         // Parameter name is "file" and local filename is "temp.txt"
         + 'Content-Disposition: form-data; name="file";'
         + 'filename="temp.txt"\r\n'
         // Add the file's mime-type
         + 'Content-type: plain/text\r\n\r\n'
         // Add your data:
         + data + '\r\n'
         + '--'+ boundary + '--';

$.ajax({
    contentType: "multipart/form-data; boundary="+boundary,
    data: body,
    type: "POST",
    url: "http://asite.com/apage.php",
    success: function (data, status) {
    }
});
14 голосов
/ 17 декабря 2015

Вот как это сделать, не создавая тело запроса из нескольких частей вручную:

var s = 'some string data';
var filename = 'foobar.txt';

var formData = new FormData();
formData.append('file', new File([new Blob([s])], filename));
formData.append('another-form-field', 'some value');

$.ajax({
    url: '/upload',
    data: formData,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function () {
        console.log('ok');
    },
    error: function () {
        console.log('err'); // replace with proper error handling
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...