Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Php 上载时调整多个图像的大小_Php_Image_Upload_Resize - Fatal编程技术网

Php 上载时调整多个图像的大小

Php 上载时调整多个图像的大小,php,image,upload,resize,Php,Image,Upload,Resize,嗨,我试图在上传时调整多个图像的大小,我有调整大小的功能,但它只适用于一个图像,所以请任何人告诉我如何循环多个文件上传 if( $_FILES['image']['size']< $max_file_size ){ // get file extension $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION)); // $ext = pathinfo($_FILES['files

嗨,我试图在上传时调整多个图像的大小,我有调整大小的功能,但它只适用于一个图像,所以请任何人告诉我如何循环多个文件上传

if( $_FILES['image']['size']< $max_file_size ){
    // get file extension
    $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
//  $ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION);
    if (in_array($ext, $valid_exts)) {
        /* resize image */

        foreach ($sizes as $w => $h) {

            $files[] = resize($w, $h);

                        }

    } else {
        $msg = 'Unsupported file';
    }
} else{
    $msg = 'Please upload image smaller than 200KB';
}
if($\u文件['image']['size']<$max\u文件大小){
//获取文件扩展名
$ext=strtolower(路径信息($_文件['image']['name'],路径信息扩展名));
//$ext=pathinfo($\u FILES['FILES']['name'][$f],pathinfo\u扩展名);
if(在数组中($ext,$valid\u exts)){
/*调整图像大小*/
foreach($w=>h){
$files[]=调整大小($w,$h);
}
}否则{
$msg='不支持的文件';
}
}否则{
$msg='请上传小于200KB的图像';
}

这未经测试,但可能会给您一个想法。 其工作方式是循环遍历变量
$iname
的所有$\u文件,即“image”。我设置它是因为它被多次使用,所以如果你改变它,它会更容易

我创建了一个名为
$image
的新变量,它将是该特定图像的变量。我通过循环遍历
$\u文件[$iname]
的所有变量来实现这一点。我将
$image
变量设置为
$key
和新值,该值将是一个数组。我们使用
$i
变量引用正确的数组

接下来,我只使用您现有的代码。由于
resize()
函数只调用宽度和高度,我不确定这里会发生什么。应传递另一个参数以引用要调整大小的图像,该参数为
$image

从我键入的可见代码中,不知道什么是
resize()
,此代码是不安全的。您应该检查的不仅仅是文件扩展名,因为它很容易更改。我通常使用exif检查图像标题。我也从不存储用户上传的数据,除非我使用PHP中的GDI函数对其重新编码

希望这能让你开始

$i = 0;
$iname = 'image';
for($i = 0; $i < count($_FILES[$iname]['size']); $i++) {

   // Create new Image Array
   $image = array();
   foreach($_FILES[$iname] as $key => $val) {
     $image[$key] = $val[$i];
   }


   if( $image['size'] < $max_file_size ) {
      $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
      if (in_array($ext, $valid_exts)) {
         foreach ($sizes as $w => $h) {
            // How is resize getting the $_FILES?
            // Should pass a variable of $image and use it instead
            $files[] = resize($w, $h);
         }
      } else {
        $msg = 'Unsupported file';
       }
    } else{
       $msg = 'Please upload image smaller than 200KB';
    }
}
$i=0;
$iname='image';
对于($i=0;$i$val){
$image[$key]=$val[$i];
}
如果($image['size']<$max\u file\u size){
$ext=strtolower(路径信息($_文件['image']['name'],路径信息扩展名));
if(在数组中($ext,$valid\u exts)){
foreach($w=>h){
//如何获取$\u文件?
//应该传递$image变量并改用它
$files[]=调整大小($w,$h);
}
}否则{
$msg='不支持的文件';
}
}否则{
$msg='请上传小于200KB的图像';
}
}

看看$\u文件数组的实际外观$_文件['image']['size'][0]将是第一个图像。增加0。我不认为有一个循环很难给出一个好的答案。这就是我得到这个的地方,如果你想看看的话