Загрузить файл в облачное хранилище с помощью облачных функций firebase

Я проверял этот пример кода:

// Download file from bucket.
const bucket = gcs.bucket(fileBucket);
const tempFilePath = path.join(os.tmpdir(), fileName);
return bucket.file(filePath).download({
  destination: tempFilePath
}).then(() => {
  console.log('Image downloaded locally to', tempFilePath);
  // Generate a thumbnail using ImageMagick.
  return spawn('convert', [tempFilePath, '-thumbnail', '200x200>', tempFilePath]);
}).then(() => {
  console.log('Thumbnail created at', tempFilePath);
  // We add a 'thumb_' prefix to thumbnails file name. That's where we'll upload the thumbnail.
  const thumbFileName = `thumb_${fileName}`;
  const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
  // Uploading the thumbnail.
  return bucket.upload(tempFilePath, {destination: thumbFilePath});
// Once the thumbnail has been uploaded delete the local file to free up disk space.
}).then(() => fs.unlinkSync(tempFilePath));

Мой вопрос конкретно по этой строчке:

return bucket.upload(tempFilePath, {destination: thumbFilePath});

почему мы указываем здесь полный путь к файлу для параметра destination? Насколько я понимаю, параметр destination указывает имя файла, которое он займет после загрузки в ведро хранилища.

Так что я предполагаю, что достаточно "thumb_Qsdflsdfa.png" вместо "/tmp/../thumb_Qsdflsdfa.png"


person dsharew    schedule 17.07.2017    source источник


Ответы (1)


Согласно документам здесь второй параметр не обязателен.

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

bucket.upload('/local/path/image.png') - название вашей корзины будет image.png

Однако, если вы хотите назвать что-то еще, что имеет смысл в соответствии с вашим проектом, вы можете передать второй параметр, например:

bucket.upload('/local/path/image.png', { destination: 'thumb_image.png' }) - теперь название вашей корзины будет thumb_image.png

Надеюсь, это имеет смысл.

Вот скриншот, чтобы было понятно -

введите здесь описание изображения

person grgmo    schedule 18.07.2017
comment
проблема с разрешением? вопрос ничего не говорит о разрешении - person grgmo; 18.07.2017
comment
о, извините, у меня было два похожих вопроса, я думал, вы ответили на другой; Хорошо, спасибо за объяснение, и я думаю, что ваш ответ имеет смысл, но в коде они передают полный путь к файлу в качестве параметра назначения, а не только имя файла. Есть идеи здесь? - person dsharew; 19.07.2017
comment
ха-ха, не беспокойся. Итак, у меня был быстрый тест, похоже, что path.join(path.dirname(filePath), thumbFileName); дает нам только имя файла thumb_image.png вместо myFolder/thumb_image.png, и он правильно сохраняет его в myFolder/. Итак, чтобы ответить на ваш вопрос, в этом примере вам нужно, чтобы он определил, где вы хотите, чтобы он был сохранен, но имя, которое он примет, будет именем файла, а не полным именем пути. - person grgmo; 19.07.2017
comment
Итак, весь path.join(path.dirname(filePath), thumbFileName) такой же, как thumbFileName? - person dsharew; 19.07.2017
comment
извините, я мог неправильно истолковать, значение myFolder/thumb_image.png и сохраняет его внутри myFolder с именем thumb_image.png. Я для наглядности картинку выложил, посмотрите. - person grgmo; 19.07.2017