【发布时间】:2019-05-31 23:55:22
【问题描述】:
我正在尝试创建一个网站以在 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
]);
}
我不知道我们是否有一个包可以从 Laravel 中的 URL 上传文件:)
注意:关于上传验证(Check if URL, If Have SSL ...),我会做的,但是希望你看到我,如何添加上传进度,真实大小文件及其原始名称仅通过 URL,上传之前 :)
谢谢
【问题讨论】:
-
有什么错误?
标签: php ajax laravel laravel-5