我希望允许客户机(浏览器中的JavaScript)将文件上传到Google云存储,目前我通过生成签名URL来实现这一点。但是,上传的文件在默认情况下是私有的。如何确保通过签名URL上载的文件是可公开读取的?
控制文件ACL是通过标头x-goog-acl来处理的,在计算签名URL时还必须包括标头x-goog-acl。为了获得公共可读性,请使用public-read
值。
let request = new XMLHttpRequest()
request.onreadystatechange = () => {
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
console.log(`Google Cloud Storage upload was successful:`, request.responseText)
} else {
console.log(`Google Cloud Storage upload was not successful: ${request.status}`)
}
}
}
request.open('PUT', signedUrl, true)
// Don't care about content-type header for signature calculation
request.setRequestHeader('content-type', 'ignore')
request.setRequestHeader('x-goog-acl', 'public-read')
request.send(file)
let gcloud = require('gcloud')
let moment = require('moment')
let gcs = gcloud.storage({
projectId: process.env.GCLOUD_PROJECT_ID,
credentials: {
client_email: process.env.GCLOUD_CLIENT_EMAIL,
private_key: process.env.GCLOUD_PRIVATE_KEY,
},
})
let bucket = gcs.bucket('aBucket')
let cloudFile = bucket.file('aFile')
cloudFile.getSignedUrl({
action: 'write',
expires: moment.utc().add(1, 'days').format(),
contentType: 'ignore',
extensionHeaders: {'x-goog-acl': 'public-read',},
}, (error, signedUrl) => {
if (error != null) {
console.log(`Failed to obtain signed URL for file`)
} else {
console.log(`Got signed URL for file: ${signedUrl}`)
}
})
我们使用签名的URL从浏览器上传。我还不知道如何在上传时设置cache-control头。 我们使用gcloud-node库对URL进行签名:
我正试图通过一个预先签名的URL将一个文件上传到Amazon S3 bucket,这是我从第三个服务获得的。意思是,我没有生成这个URL。我已经阅读了AWS文档,但我不能把它们全部放在一起。这就是我指的。 预选。php 目前,我的代码是这样的。请注意,
有没有办法用Google App Engine(Java)在Google Cloud Storage中创建一个带有签名URL的处理程序? 我可以成功地上传文件到buckets与签名的URL在我的Android(Java)应用程序,但我没有目前的方式执行额外的代码服务器端上传完成。
我尝试使用签名URL将文件上传到我的谷歌云存储。 我已经使用gsutil在我的bucket上设置了CORS参数 浏览器向Django后端发送ajax请求以获取签名URL Django后端向GCS发出请求,以便创建签名URL 签名的url将发送回浏览器。 我尝试在Ajax中使用此签名url将视频文件(内容类型=“video/mp4”)上载到GCS 对GCS返回状态代码200的请求 最后但并非最不重要
我正在使用Dropzone.js将文件上传到Azure云存储桶中。 这些文件正在上传到bucket,但当我下载它们时,它们已经损坏了。 我到处都找过了。我没有上传在块,一切似乎都在那里,但无论什么类型的文件我上传,它是破坏与我重新下载它。