PHP 画像アップロードに関する奇妙な問題が発生しました。助けてください。

WBOY
リリース: 2016-06-23 13:06:35
オリジナル
1021 人が閲覧しました

    	echo "就在这里";		//---------------------------------------------------------            if (is_uploaded_file($this->tmp_name) === false) {                $this->alert("上传失败。");            }
ログイン後にコピー


問題は上記にあり、アップロードが失敗したことを示すプロンプトが常に表示されます。

$this->tmp_name は次のように出力されます:
D:\ServerPHP\fileuploadtmp\php89BD.tmp

die(var_dump($_FILES));この出力にはデータも含まれています

私のフロント デスクが JQ を使用してアップロードしました。


ディスカッションへの返信 (解決策)

たった 2 行のコードしか与えていないのに、これまでに他に何をしたか誰にも分かりません。

たった 2 行のコードしか与えていないのに、これまでに他に何をしたか誰にも分かりません。



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("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $this->ext_arr[$this->dir_name]) . "格式。");            }        }    }
ログイン後にコピー

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

パスに 2 つのパスがある理由を確認してください\

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

なぜ 2 つのパスがあるのか​​見てみましょう\



D:\ServerPHP\fileuploadtmp\php89BD.tmp
このパスは正常にアップロードできないというのは本当ですか?

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

そこにあるものを見てください、なぜ 2 つのパスがあるのですか\



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 アップロード メカニズムを通じてアップロードされたファイル) であることをチェックし、保証します。ファイルが正当な場合は、宛先で指定されたファイルに移動されます。

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.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート