Я пытался загрузить изображения в папку приложения dropbox с помощью API dropbox v2 в моей серверной части nodejs, но каждое успешно загруженное изображение повреждено и имеет размер всего 15 байт и не может быть предварительно просмотрено из папки приложения dropbox.
Это мой код;
const express = require("express");
const router = express.Router();
const fetch = require("isomorphic-fetch");
const Dropbox = require("dropbox").Dropbox;
const dbx = new Dropbox({
accessToken:
"my access token",
fetch: fetch
});
router.post("/dbx", (req, res) => {
let imageArray;
//I receive either a single image or an array of images from the front end and
//its placed in req.files by express-fileupload
if (req.files.itemImage.length) {
imageArray = [...req.files.itemImage];
} else {
imageArray = [req.files.itemImage];
}
imageArray.forEach(image => {
console.log("Image==>>",image)
dbx
.filesUpload({
path: `/${image.name}`,
contents: image
})
.then(response => {
console.log(response);
})
.catch(err => {
console.log(err);
});
});
});
Ниже показано, как выглядит типичное изображение, которое я посылаю из команды console.log("Image==>>",image)
в моем терминале
{ name: 'ImageName.jpg',
data:
<Buffer ff d8 ff e1 1f 39 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 07 01 12 00 03 00 00 00 01 00 01 00 00 01 1a 00 05 00 00 00 01 00 00 00 62 01 1b 00 05 ... >,
size: 1865542,
encoding: '7bit',
tempFilePath: '',
truncated: false,
mimetype: 'image/jpeg',
md5: '133bda2ce6d52b4bada8ba31349c4910',
mv: [Function: mv] }
Ниже приведен ответ, который я получаю из Dropbox в моем терминале
{ name: 'ImageName.jpg',
path_lower: '/imageName.jpg',
path_display: 'ImageName.jpg',
id: 'id:R0fPv_de0wAAAAAAAAAAJw',
client_modified: '2019-07-08T10:21:36Z',
server_modified: '2019-07-08T10:21:36Z',
rev: '0130000000015cb7a8c0',
size: 15,
is_downloadable: true,
content_hash:
'87bfbb905f228845cfb691920551882f446042da2ef9576e26ca97c5374c3eef' }
Имя изображения корректно отображается в поле name:
, но размер изображения составляет всего 15 байт, и его нельзя просмотреть в Dropbox.папка приложения.Я не понимаю, что происходит, поэтому я понятия не имею, как это исправить.Может ли кто-нибудь помочь мне объяснить, что я делаю не так?Если что-то в моем вопросе не ясно, пожалуйста, укажите это, и я отредактирую соответственно.
Я попытался отправить содержимое запроса как JSON.stringify(image)
и получил поврежденный файл в 3 раза больше, чем яПри отправке я нашел способ, в котором мне нужно было сначала загрузить изображения в папку на моем сервере, а затем использовать команды fs для записи содержимого каждого в запрос, но я не хочу, чтобы такая папка быласервер, я бы предпочел просто отправить изображения немедленно, если это возможно.
Я ожидаю получить положительное сообщение от сервера Dropbox с правильным размером изображения, а затем иметь возможность предварительного просмотра изображения в папке приложения Dropbox Iсоздано.