to  cokeyang(西北狼)
有的图片头文件损坏!所以出不来!有太多的图片都不能上传,好像不能贴的要比能贴的多的多,我也不知道怎么回事
这个问题没有人知道吗

解决方案 »

  1.   

    留意下大小写问题jpg或gif
                     GPG GIF
                     GPEG
      

  2.   

    什么大小写问题?我是这样写代码的 // 判断文件类型,自动获取文件扩展名
    switch ($_FILES['userfile']['type'])

    case "image/pjpeg": 
    $fileextname = "jpg"; 
    break; 
    case "image/gif": 
    $fileextname = "gif"; 
    break; 
    case "image/x-png": 
    $fileextname = "png"; 
    break; 
    case "application/x-shockwave-flash": 
    $fileextname = "swf"; 
    break; 
    case "text/plain": 
    $fileextname = "txt"; 
    break; 
    case "application/msword": 
    $fileextname = "doc"; 
    break; 
    case "application/x-zip-compressed": 
    $fileextname = "zip"; 
    break; 
    }
    我用echo输出,发现凡是不能上传的文件,$_FILES['userfile']['type'])
    的值为空。这是怎么回事啊?
      

  3.   

    何必这么麻烦呢        $name=split("\.",$userfile_name);
            $counter=count($name)-1;
            $Size=filesize($lob_upload1);
            $mFileData=addslashes(fread(fopen($lob_upload1,"r"),$Size));//图片内容
            $pre=$name[count($name)-1];//后缀
      

  4.   

    不好意思,有点小错误,把lob_upload1换成userfile
      

  5.   

    To: dxflingxing(dxf零星)你这样的话,不是只看文件名的扩展名了吗,那可不一定是真正的扩展名,万一是一个exe可执行文件怎么办,所以我想最好能读文件头,而不是表面上看文件扩展名。
    你理解我的意思吗?
      

  6.   

    上传会检查文件头的,你把一个EXE文件改成GIF文件,上传还是会认知这是个EXE文件,如果改了文件头还能运行也见鬼了。
      

  7.   

    1、检查一下PHP.ini里的 register_globals 是On 还是off?如果是off的话把它改成on2、判断函数里是否将提交的变量进行全局化处理??3、不把你的代码作为函数测试我也曾经出过这样的错误
      

  8.   

    客户端上传的时候提交的文件file名会以$file_name表现出来,这不是说改就改的
    如果恶意修改了的话那还能提交到数据库么?
    你可以对想要的类型进行进一步的设定啊,保留想要的类型,过滤掉不想要的。
      

  9.   

    To: dxflingxing(dxf零星)
    不好意思,我不明白你的意思。我的意思是:为什么我在本机上明明是很好的Gif图片,为什么上传后由PHP判断(我估计PHP是读文件头的)得到的类型为空,即
    $_FILES['userfile']['type']
    为空
      

  10.   

    To: meikeer(美可儿)
    1、检查一下PHP.ini里的 register_globals 是On 还是off?如果是off的话把它改成on我用phpinfo()看了服务器,确实是off,但我没有权限修改,是别人的机器,我只是借用空间而已。
    另外,我在想,这个跟我所讨论的问题有关吗,关键是有些图片文件行,有些又不行,而所有不行的文件,它的
    $_FILES['userfile']['type']
    的值为空
    真是很奇怪,明明是一个在本机能看的图片,到服务器上去判断时,PHP却不认识了。
      

  11.   

    我曾经的错误是写一个论坛时在发贴确认函数里标明了全局变量,在编辑贴确认函数时COPY了发贴确认函数但没有标明变量是global的这个就不太好说了,看看图片的大小呢?
    如果可以提供一个客户端和服务器端的代码让我们看看呢?[email protected]
      

  12.   

    呵呵,奇怪呢...把你上传后不能读的文件发个来看看:) [email protected]我都是这样用的
    $picMimeType = array(
    "image/jpeg",
    "image/gif",
    "image/x-png",
    "image/png",
    "image/pjpeg",
    "image/bmp",
    "image/cgm",
    "image/svg+xml",
    "image/tiff",
    "image/tiff-fx",
    "image/x-icon",
    "image/x-xbitmap",
    "image/x-xpixmap",
    "image/x-xwindowdump",
    "image/vnd.wap.wbmp"
    );//图片类型if(in_array($hp_uploadFileName_type,$picMimeType))
    {
    if($hp_uploadFileName != "none" && is_uploaded_file($hp_uploadFileName))
    {
    @move_uploaded_file($hp_uploadFileName,$dst);
    @chmod($dst,0777);
    }
    }另外,只判断扩展名用处不怎么的准确的.对于有些文件还是会运行的
      

  13.   

    我也遇到类似问题,请问各位是如何解决的,服务器的register_globals=0ff我是无法修改的!
      

  14.   

    我发现认不出type的jpg文件很多是PhotoShop编辑过的。
    我也记得PhotoShop会破坏图片的Exif信息。
      

  15.   

    图片文件格式不对,网页里面必须是RGB的,你的文件可能是印刷格式的,用photoshop打开看看就知道了,然后改过来就行了
      

  16.   

    我这两天也遇到这个问题。一直没找到原因。输出$_FILE['xxxx']数组内容后,有文件名,但无其它信息,比如type为空。突然发现error为2,查了手册。
    ------------------
    UPLOAD_ERR_FORM_SIZE
    值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
    ------------------
    原来我在表单中加了MAX_FILE_SIZE的隐含字段,值设的小了一些,结果图片没有真正上传,所以系统也无法解析出上传文件的其它信息。建议楼主也看看error是什么,手册中有对应的错误说明。问题应该也能找出来。
      

  17.   

    用这个看看有什么错误:
    switch($_FILES['upfile']['error'])
    {
    case UPLOAD_ERR_FORM_SIZE :
    $msg='上传的文件太大';
    break;
    case UPLOAD_ERR_INI_SIZE :
    $msg='上传文件超过本服务器设置';
    break;
    case UPLOAD_ERR_PARTIAL :
    $msg='文件只有部分被上传';
    break;
    case UPLOAD_ERR_NO_FILE :
    $msg='没有文件上传';
    break;
    }
    取得扩展名用:
    //文件扩展名
    function file_ext($filename)
    {
    return substr(strrchr($filename, '.'), 1);
    }