如何在Google Cloud Storage中设置file.download()的目标?

时间:2018-11-07 18:29:11

标签: firebase google-cloud-storage google-cloud-functions firebase-storage

//namePlate.js import React from 'react'; const NamePlate = (props)=>( <div className = 'namePlate' style = {props.color(props.name)}> {props.name} <button id = {props.id} type = 'button' onClick = {props.onClick}>x</button>} </div> ) export default NamePlate //namePlate.test.js import React from 'react'; import NamePlate from './namePlate.js'; import {shallow} from 'enzyme'; it('renders', () => { const wrapper = shallow(<NamePlate name = 'Test' id = '1' onClick ={() =>{}} color = {()=>{}}/>); expect(wrapper.find('div')).to.have.lengthOf(1); }) 的Google Cloud Storage documentation建议可以指定目标文件夹:

download()

无论我在文件中输入什么值,总会在根级别将其下载到Firebase Cloud Storage。 question表示路径不能以斜杠开头,而是将示例更改为

file.download({
  destination: '/Users/me/Desktop/file-backup.txt'
}, function(err) {});

没什么不同。

将目的地更改为

file.download({
  destination: 'Users/me/Desktop/file-backup.txt'
}, function(err) {});

导致错误消息:

file.download({
      destination: ".child('Test_Folder')",
    })

云存储EROFS: read-only file system, open '.child('Test_Folder')' (文件夹和文件名)的正确语法是什么?

将存储桶从destination更改为myapp.appspot.com会导致错误消息:

myapp.appspot.com/Test_Folder

此外,示例路径似乎还指定了个人计算机硬盘驱动器上的位置。为Cannot parse JSON response 设置Cloud Storage文件夹似乎很奇怪。这是否意味着除了Cloud Storage之外,还有其他方法可以指定目的地?

这是我的代码:

Desktop

3 个答案:

答案 0 :(得分:3)

根据documentation

  

文件系统的唯一可写部分是/ tmp目录,该目录   您可以用来在函数实例中存储临时文件。这是一个   本地磁盘挂载点,称为“ tmpfs”卷,在其中写入数据   将卷存储到内存中。请注意,它将消耗内存   为该功能配置的资源。

     

文件系统的其余部分是只读的,并且可供   功能。

您应该使用os.tmpdir()来获取当前运行时的最佳可写目录。

答案 1 :(得分:0)

感谢道格,代码现在可以运行了:

exports.Storage = functions.firestore.document('Storage_Value').onUpdate((change, context) => {

  const {Storage} = require('@google-cloud/storage');
  const storage = new Storage();
  const bucket = storage.bucket('myapp.appspot.com');

  const options = {
    destination: 'Test_Folder/hello_world.dog'
  };

  bucket.upload('hello_world.ogg', options)
  .then(function(data) {
    const file = data[0];
  });

  return 0;
});

该函数从项目的hello_world.ogg文件夹中获取文件functions,然后将其写入Firebase Cloud Storage中的Test_Folder,并将文件名更改为{{ 1}}。我复制了下载URL,并且音频文件播放完美。

昨天,我认为将文件hello_world.dog变得更有意义时,将文件写入Cloud Storage似乎很奇怪。 :-)

答案 2 :(得分:0)

您可以使用以下代码或命令将文件从Google云端存储下载到计算机上 在电脑上安装python 在您的PC上安装GCS 点安装google-cloud-storage kesaktopdi.appspot.com 下载.json文件并将其保存在/ home / login /文件夹中 变更帐号 https://console.cloud.google.com/apis/credentials/serviceaccountkey?project=kesaktopdi

import os

ACCOUNT_ID='kesaktopdi'

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/home/login/" + ACCOUNT_ID + ".json"
def download_blob(bucket_name, source_blob_name, destination_file_name):
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)
    #print('Blob {} downloaded to {}.'.format(source_blob_name,destination_file_name))

download_blob(ACCOUNT_ID +'.appspot.com',       #account link
              'user.txt',                       #file location on the server
              '/home/login/kesaktopdi.txt')     #file storage on a computer

您还可以使用以下命令将文件从Google Cloud Storage服务器下载到您的计算机。

                 file location on the server     file storage on a computer

gsutil -m cp -r gs://kesaktopdi.appspot.com/text.txt /home/login

该程序是由APIuz团队https://t.me/apiuz

创建的