multiple
オプションを有効にすると、ファイルのインデックスをトラッキングする方法がわかりません。FineUploaderプラグインを使用しています。インデックスを使用して複数のファイルをアップロードする場合は、FineUploaderを使用してください
イメージアップロードを処理する際にサーバー側で行っていることは、データベースから既存のイメージを照会し、カウントを取得し、インデックスが新しくアップロードされたイメージのリンクをexisting_count+1
とデータベースに保存することです。
これは、すべてのアップロードされた画像を、そのアップロードオーダーをインデックスとして記録できるようにする必要があります。
ただし、multiple
オプションを有効にすると、アップローダーが後続のファイルのサーバーエンドポイントにアクセスしているときに、データベースクエリが最後のイメージ保存から更新されていないように見えます。
これは競合状態ですか?サーバーにファイルインデックスを渡す方法はありますか?ここで
は私のコードです:
サーバ側(Laravel)
public function save_listing_picture() {
if (Input::hasFile('listing')) {
$user = Auth::user();
$id = $user->id;
$existing_count = Image::where('user_id', $id)->count(); //this doesn't update on a multiple upload request
$file = Input::file('listing');
$imagePath = '/images/'+$id+'/image_'+$existing_count+1+'.jpg';
$img = Image::make($file)->encode('jpg', 75);
$img->save($imagePath);
$imgRecord = new Image();
$imgRecord->link = $imagePath;
$imgRecord->save();
}
}
フロントエンド(JS):
var listingUploader = new qq.FineUploader({
element: document.getElementById("image-uploader"),
template: 'qq-template',
debug: true,
request: {
endpoint: '/account/save-image',
params: {'_token': csrf_token},
inputName: 'listing'
},
thumbnails: {
placeholders: {
waitingPath: '/img/fine-uploader/waiting-generic.png',
notAvailablePath: '/img/fine-uploader/not_available-generic.png'
}
},
image: {
minHeight: 300,
minWidth: 300
},
validation: {
allowedExtensions: ['jpeg', 'jpg', 'gif', 'png'],
itemLimit: 3
}
});
代わりの代わりにアップロードセットとユーザー間で一意ではないインデックス、なぜを使用してファインアップローダによるアップロードリクエストとともに送信されたUUIDによる参照ファイル@RayNicholusありがとう、 –
私は、フロントエンドでイメージURLを取得する方が簡単だと考えているシーケンスを使用します。私はこの時点で、UUIDがより良いアプローチだと思います。 – tropicalfish
各アップロードリクエストには、このUUIDを持つ 'qquuid'パラメータが含まれています。それ以上の助けが必要ですか? –