В route.php у меня есть следующие маршруты:
Route::post('dropzone', ['as' => 'dropzone.upload', 'uses' => 'AdminPhotoController@dropzoneUpload']);
Route::post('dropzone/delete', ['as' => 'dropzone.delete', 'uses' => 'AdminPhotoController@dropzoneDelete']);
В AdminPhotoController.php я сделал следующее:
public function dropzoneUpload(Request $request)
{
if($request->ajax()) { // hmm, do I really need this?
if ($request->hasFile('file') && $request->file('file')->isValid()) {
$image_file = $request->file('file');
$image_name = time() . '_' . $image_file->getClientOriginalName();
$destinationPath = 'images/photos';
if ($image_file->move($destinationPath, $image_name)) {
$photo = new Photo(['file_name' => $image_name, 'title' => 'No title', 'description' => 'No description']);
\Auth::user()->photos()->save($photo);
return \Response::json('success', 200);
} else {
return \Response::json('error', 400);
}
}
}
}
Наконец, вот мой HTML и JS:
<div class="dropzone" id="dropzoneFileUpload">
</div>
<script type="text/javascript">
Dropzone.autoDiscover = false; // to disable the auto discover behaviour of Dropzone (sami ga definisemo ispod)
var myDropzone = new Dropzone("div#dropzoneFileUpload", {
url: "{{ route('dropzone.upload') }}",
headers: {
'X-CSRF-TOKEN': '{!! csrf_token() !!}'
}
});
</script>
И это работает, загрузка файлов работает. Но я хотел бы иметь удалить ссылки для удаления загруженных изображений. Я читал официальную документацию на http://www.dropzonejs.com/, но до сих пор не понимаю как это сделать. Я вижу, что есть:
- событие removefile — вызывается всякий раз, когда файл удаляется из списка. Вы можете прослушать это и удалить файл со своего сервера, если хотите;
- и метод .removeFile(file). Если вы хотите удалить добавленный файл из зоны сброса, вы можете вызвать .removeFile(file). Этот метод также вызывает событие removefile.
Итак, я начал так, но я не знаю, как это сделать, как удалить эти изображения:
Dropzone.options.dropzoneFileUpload = { // div has id=dropzoneFileUpload?
addRemoveLinks: true, // but still link to delete is not displayed?
dictRemoveFile: 'Remove'
};
myDropzone.on("complete", function(file) {
myDropzone.removeFile(file); // What should I do here?
});
.
ИЗМЕНИТЬ:
Если я удалю этот код:
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone", {
url: "{{ route('dropzone.upload') }}",
headers: {
'X-CSRF-TOKEN': '{!! csrf_token() !!}'
}
});
решение, которое дал @Manuel Azar, будет работать, теперь отображаются ссылки для удаления (для каждого загруженного изображения). Значит, с этим кодом какая-то проблема, чего-то не хватает.
addRemoveLinks: true, dictRemoveFile: 'Remove'
, но после загрузки изображения отображается миниатюра, но без ссылки для удаления. 22.07.2016