Laravel 5.2
を使用して、最大10個の画像を選択してプレビューを表示してから、それらを並べ替えたり、画像を追加したり、アップロードしたくない画像を削除したりするアップロードフォームに取り組んでいます。Laravelを使用してファイルを一時的に保存する方法は?
プレビューの並べ替えと削除は、JavaScriptを使用して非常に簡単に行うことができますが、それ以外には、残りの作業を正しく行う方法を考え出すのは苦労しています。私の最初のアイデアは、入力からjsファイル配列を取得し、それを別の配列に移動し、ユーザが画像プレビューとやりとりすると、FileReader
を使って表示されるようにすることでした。彼がフォームを送信すると
私は、FormData
オブジェクトを作成し、入力中に、現在のファイルを削除し、有効なすべてのものを追加します。
var formdata = new FormData(document.getElementById('upload-form'));
if (formdata.has('pic[]') && validFiles.length) {
formdata.delete("pic[]");
var len = validFiles.length;
for (i = 0; i < len; i++) {
formdata.append("pic[]", validFiles[i]);
}
}
あなたはあなたの方法は、あなたの周りは既にこのアプローチいることがわかりますJS知っている場合をFormData.delete(..)
、.append(..)
と.has(..)
方法は、古いブラウザでサポートされていないとして、それは、後方compatibillityになると深刻な問題を抱えている(クローム50及び下またはほとんどすべてのIEを含む。)
そのアイデア[OK]をスクラップ。私の第二のアイデアは、次の操作を実行することでした。
- ユーザーは
- アップロードはAJAXを使用して画像を言わを追加し、
- 戻り画像のプレビュー
- は、ユーザがプレビューを使用してみましょうLaravel を使用してどこかに一時的に格納する画像を選択しますファイルを並べ替えたり、ファイルを削除したり、彼が何をしているかを記録したりすることができます。
- フォームが提出されたら、他の情報をすべて取って、永遠に保存するファイルと削除して保存するファイルを決めます。
これを行う方法がわかりません。私はこれらのイメージのためのtmpディレクトリを持っていて、ユーザーセッションに関連するディレクトリの名前になるような文字列を生成し、そこにファイルを保存し、Session
を使ってディレクトリ名を保存すると思いました。
この問題は、Session
がグローバルタイムアウトを持つように見え、15分で期限切れに設定できないということです。私が見るもう1つの問題は、Session
が期限切れになり、ユーザが画像をアップロードしないことを決定すると、サーバに永久に留まることになります。Session
満了時にコードを実行できる方法を見つけることができませんでした。
Laravelで一時ファイルを保存する適切な方法は何ですか? ここでは間違った方向に向いています。私がやろうとしていることをやるためのより良い方法が見えますか?
アドバイスを事前にいただきありがとうございます。