Использование реакционной зоны (http://okonet.ru/react-dropzone/) Я могу получить файлы onDrop. Я отправляю их с использованием isomorphic-fetch, но я не могу правильно получить MIME-тип.Отправка файла с ответной зоной и выражением multer
onDrop(i, files) {
console.log('Received files: ', i, files, files[0]);
const file = files[0];
apiCaller('box/upload/check', 'post', {
fileData: {
name: file.name,
size: file.size,
type: file.type,
parent_folder_id: '11788814757',
},
}, {
// 'content-type': 'text/plain',
}).then((resp) => {
console.log('upload check', i, files, typeof resp, resp, resp.ok);
// if (err) {
// throw new Error('UPLOAD_CHECK_FAILED');
// }
if (resp.upload_url) {
apiCaller('box/upload', 'post', null, {
// 'Content-Type': 'multipart/form-data',
}, {
payload: file.preview,
parent_folder_id: '11788814757',
})
.then((res, er) => {
console.log('upload', i, files, res, er);
if (res) {
this.state.docsToBeUploaded[i].uploaded = true;
}
})
.catch((e) => {
console.error(e);
});
}
})
.catch((err) => {
console.error(err);
});
}
Вот выборки модуля:
import fetch from 'isomorphic-fetch';
import Config from '../../server/config';
export const API_URL = (typeof window === 'undefined' || process.env.NODE_ENV === 'test') ?
process.env.BASE_URL || (`http://localhost:${process.env.PORT || Config.port}/api`) :
'/api';
export default function callApi(endpoint, method = 'get', body, headerConfig, isFormData = false) {
console.log('calling API:', arguments);
const defaultHeaders = {
'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
'X-Requested-With': 'XMLHttpRequest',
};
const headers = { ...defaultHeaders, ...headerConfig };
if (!isFormData) {
headers['content-type'] = 'application/json';
}
console.log('headers', headers);
return fetch(`${API_URL}/${endpoint}`, {
credentials: 'include',
headers,
method,
body: JSON.stringify(body),
})
.then(response => response.json().then(json => ({ json, response })))
.then(({ json, response }) => {
if (!response.ok) {
return Promise.reject(json);
}
return json;
})
.then(
response => response,
error => error
);
}
Если установить тип MIME вручную, то я типичный «никакой границы» вопрос (Error: Multipart: Boundary not found...
), потому что браузер должен закодировать, что само по себе.
Если я не установить его, то файл не виден на всех ...
Как мне это сделать? Я могу добиться загрузки через Почтальон, так что это определенно заголовок конфигурации ...
EDIT: FYI Я использую https://www.npmjs.com/package/isomorphic-fetch отправить XHR ...