【问题标题】:File extension from data blob来自数据 blob 的文件扩展名
【发布时间】:2015-10-18 08:59:47
【问题描述】:

我有 javascript 代码可以检测何时将图像粘贴到 contenteditable 字段中:

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
        }
    }
}

以及接收图像 POST 请求的 PHP 代码:

$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 ]

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

【问题讨论】:

    标签: javascript php blob file-extension


    【解决方案1】:

    拆分 mime 类型应该没问题。唯一的问题 mime_content_type 函数已弃用。

    mime_content_type — 检测文件的 MIME 内容类型(已弃用)

    您必须改用finfo_file

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 2019-03-22
      • 2017-10-04
      相关资源
      最近更新 更多