【问题标题】:Limit input field options JS限制输入字段选项JS
【发布时间】:2021-11-25 13:02:22
【问题描述】:

我在一个 Wordpress 网站上工作,我有一个非常简单的<input type="image">,用户可以通过它发送图像文件。

我有一些非常具体的要求,我希望上传的文件是:

  • 最小 3000x3000 像素
  • 最大 5000x5000 像素
  • 最大 36MB
  • 1:1 纵横比

有没有办法通过 JS/jQuery 设置这个限制?

【问题讨论】:

  • 是的,但它们对于用户来说绝对是微不足道的。如果您向客户端添加任何验证,这应该是对您的用户的礼貌,并尝试防止浪费带宽。所有与业务逻辑相关的关键验证都必须在服务器端完成。

标签: javascript jquery wordpress file-upload user-input


【解决方案1】:

要在上传之前获取有关图像的信息,请使用 wp_handle_upload_prefilter 。纵横比是比较宽度和高度。

function test($file) {
    $data = getimagesize($file['tmp_name']);
    error_log(print_r($data,true));
    //Returns
    // Array (
    //     [0] => 3000 // width
    //     [1] => 3000 // height
    //     [2] => 3
    //     [3] => width="3000" height="30000"
    //     [bits] => 8
    //     [mime] => image/png
    // )
    error_log(print_r($file,true));
    //returns 
    // Array (
    //     [name] => filename.png
    //     [type] => image/png
    //     [tmp_name] => /tmp/phpEJC5NR
    //     [error] => 0
    //     [size] => 4347 // file size in bits
    // )
    return $file;
}
add_action('wp_handle_upload_prefilter','test');

【讨论】:

  • 这看起来可能是我的解决方案。你介意给我一些关于这段代码的解释吗?我不太擅长这个
  • wp_handle_upload_prefilter 包含名称数组 - 图像名称,类型 - 文件类型,tmp_name 是 wp 在上传之前生成的内容,以检查它是否允许图像类型,例如或返回错误,我们有大小(以位为单位),您可以像 $size = $file['size'] / 1024 一样进入 kb 。由于我们知道临时文件地址,我们可以使用函数 getimagesize 并获取其余信息,如宽度高度 mime 类型。还有其他功能可以从相机获取快门速度等其他信息(如果已记录)。查看代码以获取更多信息。
  • 当您提交图像时,运行该功能。然后在 return $file 行之前做你的魔法来检查你的要求。如果符合您的条件,则返回文件(上传)或返回错误,例如 :)
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多