Я пытаюсь создать сайт для загрузки файлов в Laravel, но не могу :(, если я использую PHP без фреймворка, все работает, но с ним (Laravel) я получаю ОШИБКИ, и это проблема.
Это мой код:
<form id="remote_upload" method="POST">
@csrf
<input name="url" id="url" type="url" />
<input name="upload" id="upload" type="submit" />
</form>
Мой код AJAX:
$(document).ready(function(){
$('#remote_upload').on('submit', function(event){
event.preventDefault();
$.ajax({
url: "{{ route('remote_upload') }}",
method:"POST",
data: new FormData(this),
// IF WE HAVE ANY FUNCTION TO SET UPLOAD PROGRESS FOR REMOTE UPLOAD - PLEASE TELL ME :)
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress', progressHandlerHome, false);
myXhr.addEventListener("load", completeHandlerHome, false);
myXhr.addEventListener("error", errorHandlerHome, false);
myXhr.addEventListener("abort", abortHandlerHome, false);
}
return myXhr;
},
dataType:'JSON',
contentType: false,
cache: false,
processData: false,
// IF SUCCESS
success:function(data)
{
$('.result').html(data.link);
}
});
});
});
А это мой контроллер:
protected function remote_upload(Request $request) {
$file = file_get_contents($request->url_file);
// UPLOAD FILE
if (getValue('storage_type', 'disk') == 's3') {
$path = Storage::disk('s3')->putFile('files', $file);
$storage = 's3';
} else {
$path = Storage::putFile('files', $file);
$storage = 'disk';
}
return response()->json([
'link' => $path
]);
}
Я не знаю, есть ли у нас пакет для загрузки файлов с URL в Laravel :)
Примечание : о проверке загрузки (проверьте, если URL, если есть SSL ...), я сделаю это, но я надеюсь, что вы видите меня, как добавить прогресс загрузки, реальный размер файл и его оригинальное имя только через URL, Перед загрузкой :)
Спасибо