В настоящее время я пытаюсь загрузить ArrayBuffer на сервер (который я не могу изменить), который ожидает файл, который я загружаю в формате multipart / form-data. Сервер извлекает из Content-Disposition
части filename
, которая будет сохранена, и в Content-type
MIME-тип, который будет использоваться при обслуживании файла. В настоящее время я успешно загружаю файл с:
var xhr = new XMLHttpRequest();
var fdata = new FormData();
var bb;
if (WebKitBlobBuilder) {
bb = new WebKitBlobBuilder();
} else if (MozBlobBuilder) {
bb = new MozBlobBuilder();
} else if (BlobBuilder) {
bb = new BlobBuilder();
}
bb.append(obj.array);
fdata.append('file', bb.getBlob("application/octet-stream"));
xhr.open("POST", url, true);
xhr.send(fdata);
Но заголовки отправляются так, как нравится браузеру, например в Chrome:
Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: application/octet-stream;
Я собирался сохранить его во временный файл с помощью FileWriter API, а затем загрузить его, но это не так.
При ответе учитывайте :
- Сервер нельзя изменить, и я не хочу выбирать другого поставщика сервера.
- Должно работать как минимум в Firefox и Chrome (мое приложение уже ограничено этими двумя браузерами).