Узловой сервер для отправки изображения в облако для размещения - PullRequest
0 голосов
/ 21 апреля 2019

Я отправляю файл изображения на свой сервер узлов через приложение реакции -

Я хочу разместить эти изображения в облаке Google или аналогичном, чтобы у них был доступный URL.

Я пробовалиспользуя cloudinary и облако Google, но пока безрезультатно!

Мой код реагирующей стороны (сокращено):

imageFile = this.state.files[0])

        const formData = new FormData()
        formData.append('file', imageFile);
        sendImage(formData)

    sendImage(image) {
      axios.post("https://137a6167.ngrok.io/image-upload", image, { 
      })
       .then(res => { // then print response status
       console.log(res.statusText)
      })
     }

Файл успешно отправлен на мой сервер и утешен:

  app.post('/image-upload', (req, res) => {
  console.log('consoling the req.body!!!!' + JSON.stringify(req.body))
  })

КОНСОЛЬ: утешает req.body !!!! {"1": "[объектный файл]"}

Я пытался использовать следующий облачный метод, но он выдавал ошибки:

  cloudinary.config({ 
  cloud_name: process.env.CLOUD_NAME, 
  api_key: process.env.API_KEY, 
  api_secret: process.env.API_SECRET
  })

app.use(formData.parse())

app.post('/image-upload', (req, res) => {

  const values = Object.values(req.files)
  const promises = values.map(image => cloudinary.uploader.upload(image.path))

  Promise
    .all(promises)
    .then(results => res.json(results))
})

это дало мне ошибку, что необработанная ошибка в обещании не была обработана, и я немного растерялся из-за того, что делать дальше!

Я тоже смотрел на облачное хранилище Google, ноне мог заставить это работать!Любой совет?

Что я действительно хочу сделать, так это вернуть в мое приложение реакции URL-адрес размещенного изображения, чтобы его можно было сохранить в БД для пользователя!

Если вы можете чем-нибудь помочь, это было бы очень признательно, спасибо.

1 Ответ

0 голосов
/ 21 апреля 2019

Есть несколько вещей, которые нужно исправить на внешнем интерфейсе, прежде чем пытаться загрузить в любое облако.

Сначала вам нужно установить заголовок 'Content-Type': 'multipart/form-data' в axios для правильной отправки данных файла.

Проверьте эту ветку для получения более подробной информации: Как установить multipart в axios with реагировать?

Тогда на стороне экспресса вам понадобится multer или какой-либо другой подобныйбиблиотека для получения данных.Вы не можете получить к нему доступ с req.body.multer добавляет, например, req.files.

https://github.com/expressjs/multer

Попробуйте выполнить действия, а затем опубликуйте точное сообщение об ошибке, полученное вами из облака Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...