Как отправить файл в Google Vision, который я только что сохранил в папке? - PullRequest
0 голосов
/ 12 февраля 2019

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

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

Я также назвал путь к существующему файлу, и Google Vision просто отлично работал.

Итак, я думаю, что это всего лишь вопрос установки времени между сохранением файла и отправкой запроса в Google Vision.

Вот мой код:

let generateFileName = (suffix, ext) => {
let filename;
let date = new Date();
return filename = `${suffix}${date.getDate()}${date.getMonth()}${date.getFullYear()}${date.getTime()}${ext}`;
 }

let saveToFile = (base64Image, pathName) => new Promise((resolve, reject) => {
const writeFile = util.promisify(fs.writeFile);
writeFile(pathName, base64Image, { encoding: 'base64' })
    .then(() => getSize(pathName))
    .then((size) => size > 0 ? console.log('size is good') : console.log('size is bad'))
resolve(pathName)
});

let getSize = (filename) => {
    const stats = fs.statSync(filename);
    const fileSizeInBytes = stats.size;
    console.log('Image size in bytes:' + fileSizeInBytes);
    return fileSizeInBytes;
}
app.post('/', (req, res) => {

if (req.body.image !== null) {
    let pathname = `./images/${generateFileName("photo", ".jpg")}`;
    saveToFile(req.body.image, pathname)
        .catch(err => console.log(err))
        .then(pathname => visionClient.webDetection(pathname)) //
        .then(labels => sendLabel(labels))
        .then(res.send("File saved"))
        .catch(err => {
            console.error('ERROR:', err);
        })

}
//...
}

Вот чтоЯ получаю в консоли:

ERROR: { Error: ENOENT: no such file or directory, open 
'./images/photo11120191549923812361.jpg'
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: './images/photo11120191549923812361.jpg' }
Image size in bytes:61282
size is good

Как это исправить?Должен ли я просто добавить setTimeout?или есть какое-то другое лучшее решение для преодоления этой ошибки?

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