2015-05-14 47 views
0

我有一個將文件上傳到服務器的應用程序。在onSelectFile函數中,我檢查文件類型以查看它是否有效。我也有一個FileFilter,限制了用戶可以選擇的內容,但是我想仔細檢查他們是否正在上傳正確的文件類型。爲什麼在MAC操作系統上FileReferenceList.fileList類型爲NULL

在PC上,我可以得到文件的值爲type,但在Mac(Safari,Firefox,Chrome)上,我得到NULL。

這裏就是我試圖讓類型

// Called when a file is selected 
      private function onSelectFile(event:Event):void { 
       //let's see if we're dealing with a new album or an existing album 
       var arrFoundList:Array = new Array(); 
       // Get list of files from fileList, make list of files already on upload list 
       for (var i:Number = 0; i < _arrUploadFiles.length; i++) { 
        for (var j:Number = 0; j < _refAddFiles.fileList.length; j++) { 
         if (_arrUploadFiles[i].name == _refAddFiles.fileList[j].name) { 
          arrFoundList.push(_refAddFiles.fileList[j].name); 
          _refAddFiles.fileList.splice(j, 1); 
          j--; 
         } 
        } 
       } 

       if (_refAddFiles.fileList.length >= 1) {     
        for (var k:Number = 0; k < _refAddFiles.fileList.length; k++) { 

         var fileType:String = _refAddFiles.fileList[k].type; 
         Alert.show("File type: " + fileType.toString() + " | name: " + _refAddFiles.fileList[k].name); //fileType is always NULL on Mac 
         var validTypes:Array = new Array(".jpg", ".jpeg", ".gif", ".png", ".JPG", ".JPEG", ".GIF", ".PNG"); 

         if (validTypes.indexOf(fileType.toLowerCase()) < 0) 
         { 
          Alert.show("The file type: " + fileType + " is not valid (file: " + _refAddFiles.fileList[k].name + "). Valid types are .jpg, .gif, and .png", "Invalid File Type"); 
          continue; 
         } 

         //start the upload for each file  
         var item:OneFile= new OneFile(); 
         item.fileName=_refAddFiles.fileList[k].name; 
         item.fileSize=_refAddFiles.fileList[k].size; 

         item.file=_refAddFiles.fileList[k]; 
         _bytesTotal+=_refAddFiles.fileList[k].size; 

         if (existingalbum.selected) 
         { 
          [email protected]; 
         } 
         fileList.addChild(item); 
         _files.addItem(item); 
         _numFiles++; 

        } 

        startUpload(); 
       } 
       else 
       { 
        Alert.show("No files were added to the list to be uploaded."); 
       }    
       if (arrFoundList.length >= 1) { 
        Alert.show("The file(s): \n\n• " + arrFoundList.join("\n• ") + "\n\n...are already on the upload list. Please change the filename(s) or pick a different file.", "File(s) already on list"); 
       } 
       else{ // some comment 

       } 

      } 

回答

0

這裏的功能是一個變通,我發現:

public static function extractFileType(fileName:String):String { 
    var extensionIndex:Number = fileName.lastIndexOf("."); 
    if (extensionIndex == -1) { 
    return ""; 
    } else { 
    return "." + fileName.substr(extensionIndex + 1,fileName.length); 
    } 
} 

http://www.josh-ho.com/as3-mac-filereference-type-workaround/

相關問題