//实例化上传类 public function upload() { $upload = new Upload(); $upload->maxSize = 10 * 1024 * 1024; $upload->exts = array('jpg', 'jpeg', 'gif', 'txt','zip'); $upload->savePath = './'; $upload->hash = false; $info = $upload->upload(); if (!$info) { $this->error($upload->getError()); } else{ foreach ($info as $file) { $uploadFile=$file['savepath'].$file['savename']; echo $uploadFile; } } } //添加文章 public function addArticle(){ $sort = $_POST['sort']; $title = $_POST['title']; $intro = $_POST['intro']; $pic = $_POST['pic']; $content = $_POST['content']; $articleSort= D('Article')->addArticle($sort,$title,$intro,$pic,$content); $this->display('Index/AddArticle'); }
クラスを定義する属性。
より 記事を追加するとき、ユーザーは更新せずにまず ajax でファイルをアップロードできます アップロードと addArticle が別々に実行されることがわかります
その後、アップロードの結果をサーバーにキャッシュして取得する必要がありますaddArticle を実行するとき
記事を追加するとき、ユーザーは最初にファイルを更新せずに ajax でアップロードできます
アップロードと addArticle が別々に実行されることがわかります その後、キャッシュする必要がありますサーバーにアップロードした結果を addArticle 実行時に取得します
結果をキャッシュするにはセッションを使用する方が良いですか?
構造では、操作が中止されたときのガベージ コレクション (画像をアップロードしてから提供した後) という問題を考慮する必要があります。送信を完了すると、アップロードされたファイルは孤立します)
これがあなたのための解決策です 参考:
アップロードされたファイルはアップロードディレクトリに直接配置されず、最初に一時ディレクトリに配置されます。フォームが正式に送信された後、最初に一時ディレクトリから名前を変更します。ディレクトリをアップロード ディレクトリに追加します
この方法では、定期的に一時ディレクトリをクリアするだけで済みます
モデレータの xuzuning は非常にうまく言っており、私が考慮していなかった操作についての参考プランも示してくれました。これで問題は解決しました、神様に感謝します! !