簡體   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