2016-10-24 1 views
0

Использование реакционной зоны (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 ...

ответ

0

, какие библиотеки вы используете для загрузки файла, используйте Request его довольно легко. использовать его внутри метода ondrop

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