当我尝试使用 jQuery ajax 请求将图像文件上传到 Laravel 控制器时,控制器中的输出为空。但是当我上传一个小文件时,它能够访问,但不能访问较大的文件。(我使用的是 laravel 版本 5.7.*)
注意:我已经更新了我的 php.ini 文件的文件上传限制和上传后限制为 50M。即使它给出了同样的问题。
我已经更新了我的 php.ini 文件,以实现文件上传限制和上传后限制为 50M。即使它给出了同样的问题。
$.ajax({
method: "POST",
url: 'photo-upload',
data: formData, // I had appended all the data to this FormData();
success: function(result){
swal("Success","Uploaded Successfully","success");
},
cache: false,
contentType: false,
processData: false
});
控制器内部
$photo = Input::file('photo'); // It's giving empty result with larger file
试试这个:
$.ajax({
url: "photo-upload",
method:"POST",
data: new FormData(this),
// IF YOU WANT TO USE PROGRESS
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
// FUNCTIONS
myXhr.upload.addEventListener('progress', progress, false);
myXhr.addEventListener("load", complete, false);
myXhr.addEventListener("error", error, false);
myXhr.addEventListener("abort", abort, false);
}
return myXhr;
},
dataType:'JSON',
contentType: false,
cache: false,
processData: false,
// IF SUCCESS
success:function(data)
{
console.log(data);
}
});
2 - 在控制器中:
protected function upload(Request $request) {
// UPLOAD YOUR FILE HERE & INSERT DATA TO DATABASE
$path = Storage::putFile('files', $request->file('photo')); // UPLOAD AND GET PATH
// RETURN JSON DATA
return response()->json([
'file' => $path
]);
}
如果您想在上传过程中使用进度或任何味精,这将有助于:
function progress(event){
var percent = (event.loaded / event.total) * 100;
var num = Math.round(percent);
// SET THIS TO ANY DIV WITH JQUERY
}
function completeHandlerHome(event){
// IF UPLOAD COMPLETED
}
function errorHandlerHome(event){
// IF IS ERROR
}
function abortHandlerHome(event){
// IF IS ABORTED
}
这对我来说是工作:)