Javascript 使用jQuery文件上传后如何获取图像尺寸?
当我试图通过jQuery文件上传上传一个文件时,我得到了下面的响应 是否可以将图像尺寸添加到此结果中,如Javascript 使用jQuery文件上传后如何获取图像尺寸?,javascript,php,jquery,jquery-file-upload,Javascript,Php,Jquery,Jquery File Upload,当我试图通过jQuery文件上传上传一个文件时,我得到了下面的响应 是否可以将图像尺寸添加到此结果中,如宽度:300px和高度:400px?我尝试编辑UploadHandler.php以满足这一需求,但我无法成功。在UploadHandler.php中有一个名为set\u additional\u file\u properties的函数。我试图向函数中添加一个自定义变量,但失败了,因为我认为该函数在文件上载过程之前调用过。它甚至找不到获取维度的文件。我不知道为什么我可能看错了文件的另一面 p
宽度:300px
和高度:400px
?我尝试编辑UploadHandler.php
以满足这一需求,但我无法成功。在UploadHandler.php
中有一个名为set\u additional\u file\u properties
的函数。我试图向函数中添加一个自定义变量,但失败了,因为我认为该函数在文件上载过程之前调用过。它甚至找不到获取维度的文件。我不知道为什么我可能看错了文件的另一面
protected function set_additional_file_properties($file) {
$file->dimensions = file_exists($file->url);
$file->deleteUrl = $this->options['script_url']
.$this->get_query_separator($this->options['script_url'])
.$this->get_singular_param_name()
.'='.rawurlencode($file->name);
$file->deleteType = $this->options['delete_type'];
if ($file->deleteType !== 'DELETE') {
$file->deleteUrl .= '&_method=DELETE';
}
if ($this->options['access_control_allow_credentials']) {
$file->deleteWithCredentials = true;
}
}
解决方案
如果我发现了您的问题(您希望在服务器端的图像中添加宽度和高度信息),那么这应该会有所帮助:
返回最多包含7个元素的数组。并非所有图像类型都包含通道和位元素。
索引0和1分别包含图像的宽度和高度
=>getimagesize($file)只需在
设置附加文件属性($file)
函数中更改UploadHandler.php
文件即可:
protected function set_additional_file_properties($file) {
$filesize = getimagesize("files/".$file->name); //'files' folder is default folder to upload
$width = $filesize[0];
$height = $filesize[1];
if ($filesize) {
$file->width = $width;
$file->height = $height;
}
$file->deleteUrl = $this->options['script_url']
.$this->get_query_separator($this->options['script_url'])
.$this->get_singular_param_name()
.'='.rawurlencode($file->name);
$file->deleteType = $this->options['delete_type'];
if ($file->deleteType !== 'DELETE') {
$file->deleteUrl .= '&_method=DELETE';
}
if ($this->options['access_control_allow_credentials']) {
$file->deleteWithCredentials = true;
}
}
刚刚添加了以下行:
$filesize = getimagesize("files/".$file->name); //'files' folder is default folder to upload
$width = $filesize[0];
$height = $filesize[1];
if ($filesize) {
$file->width = $width;
$file->height = $height;
}
“如果无法访问文件名图像,getimagesize()将生成一个E_级别的错误警告。在读取错误时,getimagesize()将生成一个E_级别的错误通知。”请查看错误。我假设该文件不存在,或者您没有收集信息的权限。此外,我尝试了
file\u exists
,它也返回false
。可能我会在上传完成之前尝试获取维度。我只需要在UploadHandler.php
中的右侧部分添加getimagesize
。但是我还找不到。只需使用调试器,并在set_additional_file_properties函数的开头停止它。然后检查文件系统中的文件是否确实存在。您可以使用php中的realpath函数将相对url(“../../../files”等)转换为绝对路径:这将使调试更容易。我不知道您使用的是哪个IDE以及它是否有调试器,但阻止php执行的一种简单(但肯定不是优雅的)方法是插入“die();”在下一行。exit()
可以停止执行。除了realpath
之外,还有诀窍!我想它会起作用的。完成后,我可以用解决方案更新答案。非常感谢。
$filesize = getimagesize("files/".$file->name); //'files' folder is default folder to upload
$width = $filesize[0];
$height = $filesize[1];
if ($filesize) {
$file->width = $width;
$file->height = $height;
}