繁体   English   中英

如何在google-cloud-storage中限制某些文件类型上传,同时判断文件是文档还是图片?

[英]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);
    });
  }
);

我想添加一些功能。 第一个功能是我可以确定上传的文件是文档还是照片。 第二个功能是我只允许上传pdfjpeg格式的文件。

为了实现这些功能,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM