我正在使用带有PHP的summernote文本编辑器,我可以拖放图像文件.png,.jpeg,并且可以上传图像并获取返回的图像路径并显示图像。
我使用codeigniter,下面用于验证图像,
$config['upload_path'] = './uploads/parts/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = '2000';
$config['encrypt_name'] = TRUE;
$config['remove_spaces'] = TRUE;
当我拖放png扩展文件时,它运行正常,下面是请求paylod,预计会运行,因为文件已经有png的扩展名。
------WebKitFormBoundaryZoezKRGNH5LYW3oL
Content-Disposition: form-data; name="userfile"; filename="2016-06-17_12-53-01.png"
Content-Type: image/png
------WebKitFormBoundaryZoezKRGNH5LYW3oL--
但是当我拍摄截图并简单地复制它,并粘贴在编辑器中时,它就像BLOB和我的验证抛出错误一样,
------WebKitFormBoundaryagedeUpo2DrEPCbg
Content-Disposition: form-data; name="userfile"; filename="blob"
Content-Type: image/png
------WebKitFormBoundaryagedeUpo2DrEPCbg--
由于没有文件扩展名,因此会抛出错误The filetype you are attempting to upload is not allowed.
我们如何将复制粘贴图像发送为.png或我应该允许哪种扩展?
谢谢,
答案 0 :(得分:0)
转到application/config/mimes.php
'gif' => 'image/gif',
'jpeg' => array('image/jpeg', 'image/pjpeg'),
'jpg' => array('image/jpeg', 'image/pjpeg'),
'jpe' => array('image/jpeg', 'image/pjpeg'),
'png' => array('image/png', 'image/x-png'),
如果它仍然失败
echo pathinfo($fileName, PATHINFO_EXTENSION);
并检查扩展名和mimes
答案 1 :(得分:0)
我确实修改了我的上传JS,
早些时候就像下面一样,
data = new FormData();
data.append("userfile", files[0])
因此,使用文件名将根据附件文件名示例myfilename.png,
现在要删除文件名的依赖关系,我将代码更改为以下,
data = new FormData();
data.append("userfile", files[0], upload.png)
所以现在所有复制粘贴图像和拖放图像文件将始终作为upload.png。即使blob也会被命名为upload.png。
参考 - https://developer.mozilla.org/en-US/docs/Web/API/FormData/append