在PHP上传图像和一些错误

时间:2013-11-25 15:02:02

标签: php file-upload

在我的php页面中我有<input type='file' name='aimage[]' id='aimage' /> 以及用于获取此文件的代码段:

    foreach($_FILES["aimage"]["tmp_name"] as $file)
    {
    /***  get the image info. ***/
     if(is_uploaded_file($file) && getimagesize($file) != false){

    $size = getimagesize($file);
    /*** assign our variables ***/
    $type = $size['mime'];
    $imgfp = fopen($file, 'rb');
    $size = $size[3];
   // $name = $file['name'];
    $maxsize = 99999999;


    /***  check the file is less than the maximum file size ***/
    //if($_FILES['aimage']['size'] < $maxsize )
      //  {
        /*** connect to db ***/
        $formvars['file'] = fread($imgfp, getimagesize($file));

虽然使用了foreach,但是我收到错误警告:fread()期望参数2很长,数组中给出了。这个错误的原因是什么?如何仅检查上传到站点的图像和代码检测到的其他文件?

2 个答案:

答案 0 :(得分:4)

错误是由fread()的第二个参数引起的:getimagesize($file))返回一个数组而不是long。 getimagesize返回一个数组(宽度,高度)

也许您想要使用filesize($file)代替

答案 1 :(得分:0)

来自getimagesize文档:

  

返回最多包含7个元素的数组。并非所有图像类型都会   包括通道和位元素。

     

索引0和1分别包含宽度和高度   图像。

     

注意:某些格式可能不包含图像或可能包含多个格式   图片。在这些情况下,getimagesize()可能无法正常运行   确定图像大小。 getimagesize()将返回零宽度   这些情况下的高度和高度。索引2是IMAGETYPE_XXX之一   指示图像类型的常量。

     

索引3是一个文本字符串,其正确的高度=“yyy”width =“xxx”   可以直接在IMG标记中使用的字符串。

     

mime是图像的对应MIME类型。这个信息可以   用于使用正确的HTTP Content-type标头传递图像:

     

示例#1 getimagesize()和MIME类型