2

我想在通过 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 //
}

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

这该怎么做?请建议我

提前致谢

4

3 回答 3

5

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

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

于 2012-05-04T08:37:41.303 回答
2

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

于 2012-05-04T08:43:37.093 回答
0

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

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

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

于 2012-05-04T08:34:58.577 回答