Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery文件上传后如何获取图像尺寸?_Javascript_Php_Jquery_Jquery File Upload - Fatal编程技术网

Javascript 使用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

当我试图通过jQuery文件上传上传一个文件时,我得到了下面的响应

是否可以将图像尺寸添加到此结果中,如
宽度: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;
}