jquery - 当我使用 AJAX jQuery 向 Laravel 5 控制器提交较大的文件时,它得到空数据
问题描述
当我尝试使用 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
}
这对我有用:)
推荐阅读
- exchangewebservices - EWS 为某些事件返回 tzone://Microsoft/Custom,我们如何提取时区信息?
- html - Refreshig 带有 html 代码的 IP 摄像机图像代码仅在本地工作
- python - Python 检查 listelement 是否在值中,但返回它找到的 listelement 而不是 true
- javascript - 如果用户中断,自动向下滚动取消
- python - 基于一个共同的项目运行两个烧瓶应用程序
- java - 我如何调用这些方法?
- javascript - bcrypt.compare() 或 bcrypt.compareSync()
- python - 如何使用带有 preprocessing_function 的数据生成器正确加载图像?
- python - Telethon,给定要更改的单词,更改文本实体的偏移量和长度
- kotlin - 将对象变量公开为公共使其成员无法解析