[英]How to restrict some file types from uploading in google-cloud-storage, and also determine if the file is a document or an image?
我正在使用 firebase 存储文档中给出的代码将文件上传到我的项目。
这是代码:
var metadata = {
contentType: 'image/jpeg'
};
var uploadTask = storageRef.child('images/' + file.name).put(file, metadata);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
(snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED:
console.log('Upload is paused');
break;
case firebase.storage.TaskState.RUNNING:
console.log('Upload is running');
break;
}
},
(error) => {
switch (error.code) {
case 'storage/unauthorized':
// User doesn't have permission to access the object
break;
case 'storage/canceled':
// User canceled the upload
break;
// ...
case 'storage/unknown':
// Unknown error occurred, inspect error.serverResponse
break;
}
},
() => {
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL);
});
}
);
我想添加一些功能。 第一个功能是我可以确定上传的文件是文档还是照片。 第二个功能是我只允许上传pdf
和jpeg
格式的文件。
为了实现这些功能,firebase 存储是否提供任何 function 或者我是否需要使用split
ZC1C425268E68385D1AB5074C17A94F14 从file name
手动确定file type
?
Cloud Storage 不提供内容类型限制强制执行,但签名 URL 除外,签名 URL 可以强制执行 HTTP content-type
header。
不要使用文件名来确定文件类型。 有一些很好的库可以提供更可靠的内容类型检测。 通过读取文件的前几个字节,可以轻松检测 PDF 和 JPEG。 这不是保证,因为随机数据也可以在关键数据位置具有所需的字节值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.