Tag: 谷歌云存储

Google Storage nodejs上传MIME TYPE

如何为我正在上传的文件指定MIMEtypes。 我正在关注这个nodejs示例https://cloud.google.com/storage/docs/object-basics#storage-upload-object-nodejs “` function uploadFile (bucketName, fileName, callback) { // Instantiates a client const storageClient = Storage(); // References an existing bucket, eg "my-bucket" const bucket = storageClient.bucket(bucketName); // Uploads a local file to the bucket, eg "./local/path/to/file.txt" bucket.upload(fileName, (err, file) => { if (err) { callback(err); return; } console.log(`File ${file.name} uploaded.`); callback(); }); } […]

如何使用gcloud-node获取Google Cloud Storage文件的URL?

使用gcloud节点库 ,如何获取云存储存储桶中文件的URL? 考虑一下文件对象的以下瞬态: let bucket = gcs.bucket(`aBucket`) let cloudFile = bucket.file(`aFile`) 我想获得下载cloudFile的URL。

Google Cloud Storage签署url – NodeJS

所以我试图在我的应用程序中使用GCS来签署URL,接着是: 签名的URL 但是我想在NodeJS中执行,并且签名代码仅在Java,Python,Go或C#中给出: 签名代码 我没有在互联网上find一个好的资源在NodeJS中做同样的事情。 我将需要在Node中执行此操作,因为我正在使用Node来侦听另一个数据库上的某个事件,并且希望相应地生成这些URL。 谢谢你的帮助 !

通过快递中间件,从谷歌云存储中提供静态文件

我有一个快速的应用程序托pipe在谷歌AppEngine使用快速静态中间件。 我想将静态文件存储在google-cloud-storage ,并且能够从常规文件系统切换到google-cloud-storage而无需太多修改。 我正在考虑写一个中间件: 使用Google Cloud客户端库来pipe理Node.js ,例如来自Google Cloud Storage的Expresscaching图片stream ; 或充当代理(将path名映射到原始的google-cloud-storage URL)。 有没有更简单/更清洁的方法来做到这一点?

Google云端函数:无法validation请求

我正在使用Google Cloud Functions上的node.jsfunction将Pub / Sub消息保存到GCS(存储),但是它随机给我发送了一些消息的下列错误消息(大部分消息被成功写入): "Error: Could not authenticate request. Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information." 这是没有意义的,一旦在GCE上运行,将使用相同的服务帐户的所有消息,具有适当的权限,并且所有消息来自同一个来源,并去往相同的目的地。 有人可以启发我做什么? 我正在使用谷歌云/存储版本0.8.0。 /** * Triggered from a message on a Cloud Pub/Sub topic. * * @param {!Object} event The Cloud Functions event. * @param {!Function} The callback function. */ const bucketName = […]

使用NodeJS的GCE GCloud存储下载不完整

我使用的是GCloud 0.18.0版。 在我的开发PC上,我确实在Google Storage上下载了非常好的文件。 但是,一旦脚本在Google Compute Engine上运行,下载就会开始,并说已完成,但事实并非如此。 这是一个日志文件,所以当我检查下载的日志文件,我看到它没有完成。 该文件的开始在那里。 我做了这么多的search,没有看起来像我的问题。 var gcloud = require('gcloud')({projectId: project_id}); var bucket = google.storage.bucket('logs'); var log_one = {filename: 'test.log'}; bucket.file(log_one.filename).download({destination: './tmp/processing_' + log_one.filename}, function(err) { if (err.code == 403 || err.code == 404 || err.message) { console.log(err); console.log("Error after bucket.file.download"); return; } console.log("Downloaded file " + log_one.filename + " completed"); […]

Google云端存储似乎忽略了客户提供的encryption密钥标头

我正在开发一个将图像存储在Google Cloud Storage(GCS)中的项目。 我使用下面的代码运行一个NodeJS服务器。 文件通过签名的URL发送到服务器,以便在GCS中恢复上传。 抛光整个文件后,服​​务器将请求发送到该地址。 那部分工作。 但是,当我将请求头添加到指定客户提供的encryption密钥的请求时,GCS将忽略它们。 上传完成,返回200 ,并应用默认encryption密钥。 当我尝试x-goog-encryption-algorithm的无效值,我应该得到一个400 ,它上传罚款。 我应该非常接近,但是我错过什么标题或configuration可以指定客户提供的encryption密钥? var crypto = require("crypto"); var fs = require("fs"); var Request = require("request"); var hashKey = function(key) { var hash = crypto.createHash("sha256"); key = new Buffer(key); hash.update(key); return hash.digest("base64"); }; var GCS = module.exports = function GCS(env) { // config contains the encryption […]

Google云存储使用节点js

我需要使用谷歌云和节点js上传和分享我的文档。 我创build了一个Google云帐户,并使用console.developers.google.com网页在Google存储中创build了存储桶,文件夹和对象。 我有些疑惑 为单个项目创build了多less桶(如果可能的话) 创造100万桶?) 如何共享文件夹? 如果可以使用授权令牌来访问存储桶中的对象(对于公共来说,每个请求中的令牌都会改变)

Node.jsstream直接上传到Google云端存储

我有一个运行在Google Compute VM实例上的Node.js应用程序,它直接从POST请求(不通过浏览器)接收file upload,并将传入的数据stream式传输到Google Cloud Storage(GCS)。 我正在使用Restify b / c我不需要Express的额外function,因为它可以很容易地stream入传入的数据。 我为这个文件创build一个随机的文件名,把传入的req转移到一个整洁的小节点封装器(可以在这里find: https : //github.com/bsphere/node-gcs ),它向GCS发出一个PUT请求。 使用PUT的GCS文档可以在这里find: https : //developers.google.com/storage/docs/reference-methods#putobject …它说如果使用chunked transfer encoding Content-Length是不必要的。 好消息:该文件正在相应的GCS存储“桶”内创build! 坏消息: 我还没有想出如何从Restify获取传入文件的扩展名(注意手动设置'.jpg' 和 content-type )。 该文件正在经历轻微的腐败(几乎可以肯定地做我做错了PUT请求)。 如果我从Google下载POST文件,OSX告诉我它的损坏…但是,如果我使用PhotoShop,它打开,看起来很好。 更新/解决scheme 正如vkurchatkin所指出的vkurchatkin ,我需要parsingrequest对象,而不是仅仅把所有东西都传送给GCS。 在尝试了更轻的busboy模块之后,我决定使用multiparty更容易一些。 为了dynamic设置Content-Type ,我简单地使用Mimer ( https://github.com/heldr/mimer ),引用传入文件的文件扩展名。 重要的是要注意,由于我们正在pipe道part对象, part头必须被清除。 否则,意想不到的信息,特别是content-type将被传递,并且可能会与我们试图明确设置的content-type冲突。 以下是适用的修改后的代码: var restify = require('restify'), server = restify.createServer(), GAPI = require('node-gcs').gapitoken, GCS […]

创build一个预先签名的url,并使用节点js将file upload到谷歌云存储

我需要使用签名的url上传文件到谷歌云存储。 我需要通过不同的步骤上传。 使用bucketName,服务密钥和需要的安全证书创buildsignedUrl(使用任何node.js库) 使用邮递员或restClient上传带有创build的签名url的单个文件。 这是我创buildsignedUrl上传的代码 var crypto = require("crypto"); var fs = require("fs"); var URL_VALID_DURATION = 1000 * 120;//for 120 seconds var expiry = Math.floor(((new Date).getTime() + URL_VALID_DURATION) / 1000); var key = 'filename'; var bucketName = 'bucketName'; var accessId = 'gserviceaccount.com'; var stringPolicy = "POST\n" + "\n" + "\n" + expiry + "\n" + […]