2015-10-18 289 views
0

我有当图像被粘贴到一个CONTENTEDITABLE场检测的JavaScript代码:文件扩展名

$image = $_FILES['newImage']; 
$imageFileType = pathinfo($image["name"],PATHINFO_EXTENSION); // obviously doesn't work 
$imageId = new ImageId(); 
$imageName = $imageId.".".$imageFileType; 
// [... some checks on the file ...] 
$targetFile = "../../images/uploads/{$imageName}"; 
if($imageOK && move_uploaded_file($image["tmp_name"],$targetFile)){ 
//[ do stuff ] 

:接收用于图像POST请求

document.onpaste = function(event){ 
    var items=(event.clipboardData || event.originalEvent.clipboardData || event.dataTransfer).items; 
    for(i in items){ 
     var item=items[i]; 
     if(item.kind==='file' && ~item.type.indexOf("image")){ //is file and is image 
      event.preventDefault(); 
      var blob=item.getAsFile(); 
      console.log(item, blob); 
      var data=new FormData(); 
      data.append('fname','imageFromClipboard'); //extension for file name?? 
      data.append('newImage',blob); 
      sendImage(data); //just a $.POST request 
     } 
    } 
} 

和PHP代码如何可靠地从blob获取文件扩展名?我应该用JS还是PHP来做?是否所有可能的图像文件类型只是在斜线处分割MIME类型(例如“image/png”)并将其用作扩展名?

回答

0

分割MIME类型应该没问题。只有问题mime_content_type函数已弃用。

mime_content_type - 检测MIME内容类型的文件(不建议使用)

你将不得不使用finfo_file代替。

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
$ftype = finfo_file($finfo, $image["tmp_name"])