PHP图片上传奇怪问题,各位帮忙!

php中文网
发布: 2016-06-23 13:06:35
原创
1242人浏览过

    	echo "就在这里";		//---------------------------------------------------------            if (is_uploaded_file($this->tmp_name) === false) {                $this->alert("上传失败。");            }
登录后复制


问题就出在上面那里,老是提示上传失败。

$this->tmp_name打印出来如下:
d:\serverphp\fileuploadtmp\php89bd.tmp

die(var_dump($_files));打印也有数据

我前台是用jq上传的:

Cutout老照片上色
Cutout老照片上色

Cutout.Pro推出的黑白图片上色

Cutout老照片上色 20
查看详情 Cutout老照片上色


回复讨论(解决方案)

你只给了两行代码,谁知道你之前还做了什么?

你只给了两行代码,谁知道你之前还做了什么?



private function check_upload()    {        //有上传文件时        if (empty($_FILES) === false) {            //原文件名 就是文件名            $this->imageData['filename'] = $_FILES['imgFile']['name'];            //服务器上临时文件名            $this->tmp_name = $_FILES['imgFile']['tmp_name'];            //文件大小            $this->imageData['filesize'] = $_FILES['imgFile']['size'];            //检查文件名            if (!$this->imageData['filename']) {                $this->alert("请选择文件。");            }            //检查目录            if (@is_dir($this->save_path) === false) {                $this->alert("上传目录不存在。");            }            //检查目录写权限            if (@is_writable($this->save_path) === false) {                $this->alert("上传目录没有写权限。");            }            //检查是否已上传            if (@is_uploaded_file($this->tmp_name) === false) {                $this->alert("上传失败。");            }            //检查文件大小            if ($this->imageData['filesize'] > $this->max_size) {                $this->alert("上传文件大小超过限制。");            }            //检查目录名            $this->dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);            if (empty($this->ext_arr[$this->dir_name])) {                $this->alert("目录名不正确。");            }            if($this->dir_name == 'image')            {                $this->imageData['type'] = 'image';            }else{                $this->imageData['type'] = 'file';            }            $this->get_ext();            //检查扩展名            if (in_array($this->file_ext, $this->ext_arr[$this->dir_name]) === false) {                $this->alert("上传文件扩展名是不允许的扩展名。
只允许" . implode(",", $this->ext_arr[$this->dir_name]) . "格式。");            }        }    }
登录后复制

var_dump(is_file($this->tmp_name));

看看有什么,为什么你路径有两个\

var_dump(is_file($this->tmp_name));

看看有什么,为什么你路径有两个\



D:\ServerPHP\fileuploadtmp\php89BD.tmp
是不是这种路径就不能正常上传?

var_dump(is_file($this->tmp_name));

看看有什么,为什么你路径有两个\



bool(true)
这是代码文件有?

我问你 is_upload_file 之前还做了什么
你却贴了一个方法定义,怎么就知道这个方法被执行了呢?执行后又做了什么呢?


	public function upload(){		error_reporting(E_ALL);		ini_set('display_errors', 1);		$filename=$_FILES['imgFile']['name'];		$type=$_FILES['imgFile']['type'];		$tmp_name=$_FILES['imgFile']['tmp_name'];		$size=$_FILES['imgFile']['size'];		$error=$_FILES['imgFile']['error'];		$kk= move_uploaded_file($tmp_name, PATH_DATA . "/upload/".$filename);		var_dump($kk);//这里返回false	}
登录后复制

上传路径是调试过确认没有问题,临时文件打印也有。就move_uploaded_file处返回false

bool move_uploaded_file ( string filename, string destination )


本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。 

如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。 

如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。

$kk= move_uploaded_file($tmp_name, PATH_DATA . "/upload/".$filename);

把$tmp_name, PATH_DATA . "/upload/".$filename 打印出来看看。

膜拜我神.....

问题解决了谢~~

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号