ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp3.1で複数のファイルをアップロードするときに、画像とドキュメントを別のフォルダーに保存するにはどうすればよいですか?
Thinkphp3.1 画像とドキュメントをアップロードして個別に保存するにはどうすればよいですか?
ファイルの接尾辞に基づいてアップロード ディレクトリの選択を決定します
ファイルの接尾辞に基づいてアップロード ディレクトリの選択を決定します
UploadFile クラスを継承し、save メソッドをオーバーライドできます
独自のアップロード クラスを使用して完成させることもできます
if ($type == '.jpg'){
$upload->savePath= './Public/image/home/ new1/'
if(!$upload->upload( )) {// アップロード エラー プロンプト エラー情報 t $this- & gt; error ($ Upload-& gt; geterrormsg ());
} Else {// アップロードされたファイル情報
$ info = $ GetupLoadfileInfo; (); }
} else if ($type == '.txt'){
$upload->savePath= './Public/image/home /new2/'; ()) {// アップロード エラー メッセージ
$this->error($upload->getErrorMsg())
}else{// $info =
}
写真、ドキュメント、そして2つのファイル?
ファイルのサフィックスを取得できる場合 $type
$upload->savePath= './Public/image/home/ new1/'; ! $upload->upload()) {// アップロード エラー メッセージ
$this->error($upload->getErrorMsg());
}else{// アップロードされたファイル情報を取得します
$info = $upload->getUploadFileInfo();
}
}else if ($type == '.txt'){
$upload->savePath= './Public/image/home /new2/'; !$upload->upload()) {//アップロード エラー メッセージ
$this->error($upload->getErrorMsg());
}else{// アップロード成功 アップロードされたファイル情報を取得します
$info = $upload->getUploadFileInfo();
}
}
複数のファイルを同時にアップロードする場合、複数のファイルフィールドがあるはずですよね。
a974b784b2cd00a6ebbfaffe2a91c0fd
3477b48cfed9ff8c473fc2ca348bcd0f
これは単なるファイル上の判断ではないでしょうか?
$saveName = $rule().".".$filename['extension'] ;
$saveName = $rule($filename).".".$filename['extension']; に変更します
次に、
$upload->savePath = '';$upload->saveRule = 'myFunction';
function myFunction($filename) { $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? '图片路径' : '文档路径'; return $p . $filename['name'];}を定義します
如果你愿意修改 UploadFile.class.php 文件的话,事情还是有转机的
把 getSaveName 方法中的(408行附近)
$saveName = $rule().".".$filename['extension'];
改成
$saveName = $rule($filename).".".$filename['extension'];
然后
$upload->savePath = '';$upload->saveRule = 'myFunction';
function myFunction($filename) { $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? '图片路径' : '文档路径'; return $p . $filename['name'];}
是空的,我在上传目录不存在上一句输出了下。
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = './Public/image/home/';
函数里只留 'img/' : 'file/'
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = './Public/image/home/';
函数里只留 'img/' : 'file/'
return $p . $filename[my_filename()];
应为
return $p . my_filename();
可直接写作
return $p . date('ymdHis_').mt_rand();
return $p . $filename[my_filename()];
应为
return $p . my_filename();
可直接写作
return $p . date('ymdHis_').mt_rand();モデレーターに感謝します。初めてフレームワークを使用しましたが、いくつかの問題はモデレーターによって解決されました。