google-cloud / storage bucketFile.getSignedUrl Ошибка подключения - PullRequest
0 голосов
/ 11 октября 2019

Так что у меня такая же проблема, как и в этом посте . Я получаю удаленную загрузку URL-адреса файла в корзину внутри функции firebase.

Однако эта проблема возникает только для файлов типа PDF.

Для других типов, которые я тестировал, таких как ms-word, ms-excel, ppt-presentation, загрузка происходит и публичный URL успешно возвращается.

function index.js

  const { Storage } = require('@google-cloud/storage'),
  fs = require('fs'), os = require('os'), path = require('path'),

  storage = new Storage({
  projectId: firebaseCredentials.projectId,
  keyFilename: './xxxv-xx.json'
  }),
  bucket = storage.bucket(firebaseCredentials.storageBucket),
  request = require('request').defaults({ encoding: null })

  console.log(`bucket? -> \n ${bucket}`)

  return request.get(incomingMessageData.url, async (error, response, body) => {

  if (!error && response.statusCode == 200) {

  const tempFilePath = path.join(os.tmpdir(), incomingMessageData.file)

  console.log(`tempFilePath -> ${tempFilePath} \n os.tmpdir() -> ${os.tmpdir()}`)

  fs.writeFile(tempFilePath, body, async err => {
  if (err) throw err;
  console.log(`The file has been saved to temp storage! \n 
  Now starting to upload -> ${incomingMessageData.phone}/${incomingMessageData.file}
  `);


  try {

  console.log('inside try catch bucket upload')

      // this approach works
      const bucketFile = bucket.file(`${incomingMessageData.phone}/${incomingMessageData.file}`);
      await bucketFile.save(body)

      console.log('bucket upload finished')

      // the problem is happenning here. It´s throwing generic 'connection error' message that withouth further details is elusive to solve

      let result = await bucketFile.getSignedUrl({
        action: 'read',
        expires: '03-17-2025'
      }), url

      if (result[0].indexOf('http') < 0) {
        console.error('Error getting SignedUrl ', result);
        url = result.toString()
      } else {
        url = result[0]
      }


         let metadata = await bucketFile.getMetadata(),
         size = bytesToSize(metadata[0].size)

         // handle url 
         console.log(`${tempFilePath} uploaded to ${bucket.name}. \n Got 
           uploadUrl? -> ${url}`)

Для файлов типа pdf журнал gcp выглядит следующим образом

enter image description here

И для других типов файлов, таких как ms-word, журнал показывает

enter image description here

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