在 Javascript, PHP 中验证图像分辨率


Validate image Resolution in Javascript, PHP

我想在通过Javascript上传PHP图像之前验证图像分辨率。在我的php表单中,我想上传两个不同的图像,并且两个图像都有不同的分辨率限制。

我尝试以下代码

PHP代码

echo "<form name='add' enctype='multipart/form-data' action='AppActions.php' method='post' onSubmit='return validate_create();'>";
echo "<div class='form_label'>Album Wrapper (Big Image) *</div>";
echo "<div class='form_input'><input type='file' name='bigimage' id='bigimage' />";
echo "<div class='form_label'>Album Wrapper (Small Image) *</div>";
echo "<div class='form_input'><input type='file' name='smallimage' id='smallimage' />;
echo "<input type='submit' name='add' value='Create' class='Buttons' id='add'>";    

在 Javascript 中

function validate_create()
{
var bigimage = document.getElementById('bigimage');
var smallimage = document.getElementById('smallimage');
var big_img_width = bigimage.clientWidth;
var big_img_height = bigimage.clientHeight;
var small_img_width = smallimage.clientWidth;
var small_img_height = smallimage.clientHeight;
// if condtion to check the condition //
}

在这里,即使我选择不同大小的文件,我也获得了两个图像的宽度和高度。

怎么做?请建议我

提前致谢

您可以使用 JavaScript 中新的 HTML5 File API 来检查这一点。但是,这在许多浏览器中尚不可用。不过,您可以实现它,因此支持此功能的浏览器用户可以利用这一点。查看此SO帖子以获取更多信息和示例。另一种可能性是使用某种Flash上传器(只需搜索它(。

你不能事先在PHP中检查它。PHP 运行服务器端,显然,它无法访问客户端计算机上的任何内容。

使用 getimagesize(( 验证文件尺寸。如果它无效,则抛出并出错。另外,您可能想阅读使用javascript/jquery获取上传的图像尺寸?

当你执行bigimage.clientWidthsmallimage.clientWidth时,你实际上是在获取input元素的宽度,而不是你要上传的图像。此外,您的 JavaScript 是在文件实际上传之前执行的,目前尚不清楚图像的分辨率。实际上,您甚至不知道这些文件是否真的是图像文件。

上传

文件的类型和图像分辨率(如果是图像(只能在上传完成后确定。因此,这必须在PHP(您的AppActions.php脚本(中完成。在 PHP 中,您可以全局访问文件$_FILES以查看上传了哪些文件、它们的类型和大小。然后,您可以打开图像并使用imagesximagesy来确定尺寸。

如果您在允许上传之前必须知道文件类型,那么我相信您唯一的出路就是使用 Flash 组件。例如,SWFUploader。JavaScript永远无法访问用户计算机上的文件,但Flash可以并允许您在实际上传文件之前确定文件类型和大小。尽管如此,您的网站将需要Flash,这可能不是您想要的。