Php Laravel 5中的远程URL上载
我正试图创建一个网站来上传Laravel中的文件,但我不能:(,如果我在没有框架的情况下使用PHP,一切正常,但使用它(Laravel),我会出错,这是一个问题 这是我的代码:Php Laravel 5中的远程URL上载,php,ajax,laravel,laravel-5,Php,Ajax,Laravel,Laravel 5,我正试图创建一个网站来上传Laravel中的文件,但我不能:(,如果我在没有框架的情况下使用PHP,一切正常,但使用它(Laravel),我会出错,这是一个问题 这是我的代码: <form id="remote_upload" method="POST"> @csrf <input name="url" id="url" type="url" /> <input name="upload" id="upload" type="s
<form id="remote_upload" method="POST">
@csrf
<input name="url" id="url" type="url" />
<input name="upload" id="upload" type="submit" />
</form>
$(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上传文件:)
注意:关于上传验证(检查URL,如果有SSL…,我会这样做,但我希望你能看到我,如何仅通过URL添加上传进度、文件的真实大小及其原始名称,上传前:)
谢谢假设您从ajax FormData对象获得了正确的数据,您只需执行以下操作:
public function store(Request $request)
{
$imgLocation = Storage::disk('public')->put("imagename", $request->file('image'));
...
}
这会将图像本地保存到您的laravel项目中,您可能需要为AmazonS3编辑它,但应该是类似的
如果要通过url上载图像,可以尝试执行以下操作:
public function store(Request $request) {
$url = $request->image;
$contents = file_get_contents($url);
$name = substr($url, strrpos($url, '/') + 1);
Storage::disk('s3')->putFile($name, $contents);
...
}
您只需像这样使用
存储器
:
protected function remote_upload(Request $request) {
$file = $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上传文件,而不是直接上传:)$cpmtents?这是什么?@SaifManwill我的意思是
$contents
谢谢,我现在就试试:)