Я генерирую BLOB-объект в JavaScript через поток записанного видео (MediaRecorder
).
Полученный файл заканчивается как .webm, что подтверждается ffmpeg.Все идет нормально.Вот что я делаю.
//promises container
let dfds = [];
//promise 1 - get blob file content
dfds.push(new Promise(resolve => {
var xhr = new XMLHttpRequest();
xhr.open('GET', file_url, true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
if (this.status == 200) resolve(this.response);
};
xhr.send();
}));
//(other non-pertinent promises omitted here)
//when ready, build and send request
Promise.all(dfds).then(resolution_data => {
let req = new XMLHttpRequest(), fd = new FormData();
fd.append('title', title);
fd.append('file', resolution_data[0]); //<-- the blob
req.open('POST', 'my-script.php');
req.send(fd);
});
Это отлично работает.Однако, на стороне PHP, когда я запускаю print_r($_FILES)
, тип mime заканчивается как text / plain.Я хотел бы передать в PHP тип mime, чтобы я мог проверить это, прежде чем пропустить файл (я знаю, что mimetype не всегда надежен, но это всего лишь очередная проверка нескольких типов, которые я делаю.)
Я добавил это в запрос AJAX:
req.setRequestHeader('Content-Type', 'video/webm');
Однако, с этим добавлением, скрипт PHP сообщает, что $_FILES
совершенно пуст.
Как я могу отправитьТип MIME вместе с файлом?