Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase函数更改存储中上载文件的文件名_Javascript_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript Firebase函数更改存储中上载文件的文件名

Javascript Firebase函数更改存储中上载文件的文件名,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,有没有办法使用Firebase函数更改图像的文件名,而无需再次下载和上载 我使用onChange监听器来捕获实际的上传,我得到了上传文件所需的所有数据,但是我不能在不下载的情况下更改任何信息 我当前的代码: const functions = require('firebase-functions'); const path = require('path'); exports.addTimeStamp = functions.storage.object().onChange(event =

有没有办法使用Firebase函数更改图像的文件名,而无需再次下载和上载

我使用onChange监听器来捕获实际的上传,我得到了上传文件所需的所有数据,但是我不能在不下载的情况下更改任何信息

我当前的代码:

const functions = require('firebase-functions');
const path = require('path');

exports.addTimeStamp = functions.storage.object().onChange(event => {
const object = event.data; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.
const resourceState = object.resourceState; // The resourceState is 'exists' or 'not_exists' (for file/folder deletions).
const metageneration = object.metageneration; // Number of times metadata has been generated. New objects have a value of 1.

// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
    console.log('This is not an image.');
    return;
}

if (!filePath.startsWith('deliveryNote/')) {
    console.log('This is not a delivery note.');
    return;
}

// Get the file name.
const fileName = path.basename(filePath);
console.log('filename: ' + fileName);
// Exit if the image is already a thumbnail.
if (fileName.startsWith('note_')) {
    console.log('Already modified');
    return;
}

// Exit if this is a move or deletion event.
if (resourceState === 'not_exists') {
    console.log('This is a deletion event.');
    return;
}

// Exit if file exists but is not new and is only being triggered
// because of a metadata change.
if (resourceState === 'exists' && metageneration > 1) {
    console.log('This is a metadata change event.');
    return;
}

/////////////////////////////////////////////////////////////
//Added folowing code thx to Doug Stevenson
const bucket = gcs.bucket(object.bucket);
var file = bucket.file(filePath);
console.log('filepath: ' + filePath);
console.log('filename: ' + fileName);
const dirname = path.dirname(filePath);
file.move(dirname + '/' + 'note_' + fileName, function(err, destinationFile, apiResponse) {
});
//////////////////////////////////////////////////////////////
});

要与存储桶中的文件交互,可以使用。使用它可以获取表示已更改文件的文件对象,并使用其方法更改其名称。

要与存储桶中的文件交互,可以使用。使用它获取表示已更改文件的文件对象,并使用其方法更改其名称。

我可以将云存储与Spark计划一起使用吗?看起来move方法也会像上面一样,创建一个新文件,删除旧文件。它只会根据您的指定更改存储中的名称和/或路径。它不会在本地下载。Spark计划的限制记录在这里:我可以在Spark计划中使用云存储吗?看起来move方法也会像上面一样,创建一个新文件,删除旧文件。它只会根据您的指定更改存储中的名称和/或路径。它不会在本地下载。此处记录了Spark计划的限制: