javascript - Laravel 8:AJAX 使用 onchange 上传文件
问题描述
我想在 laravel 8 中使用 onchange 上传多个文件。是否可以仅通过 onchange 上传?我有这个 html 表单。我希望你们能帮助我。谢谢
<form method="POST" enctype="multipart/form-data" id="upload_form">
@csrf
<input type="file" name="file[]" id="file" multiple >
</form>
这是我的 Jquery 和 Ajax 脚本。
<script>
function uploadfile(){
var formData = new FormData($('#upload_form')[0]);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type:'POST',
url: "{{ route('dropzone-action') }}",
data: formData,
contentType: false,
processData: false,
success: (response) => {
if (response) {
this.reset();
alert('Image has been uploaded successfully');
}
},
error: function(response){
console.log(response);
$('#image-input-error').text(response.responseJSON.errors.file);
}
});
}
这是我的控制器
function action(Request $request){
$request->validate([
'file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if($request->hasFile('file')){
foreach($request->file as $file) {
$completeFileName = $file->getClientOriginalName();
$fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME);
$extension = $file->getClientOriginalExtension();
$file->storeAs('uploads', $completeFileName);
}
}
return response()->json('Image uploaded successfully');
}
解决方案
您可以调用更改方法
$("#file").change(function() {
uploadfile();
});
并在验证中
$request->validate([
'file.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
并在控制器中
function action(Request $request){
$request->validate([
'file.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
foreach($request->file as $file) {
if($file!=null){
$completeFileName = $file->getClientOriginalName();
$fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME);
$extension = $file->getClientOriginalExtension();
$file->storeAs('uploads', $completeFileName);
}
}
return response()->json('Image uploaded successfully');
}
推荐阅读
- django - 为什么 Django 创建一个新实例而不是更新?
- docker - 码头工人组成后詹金斯没有工作
- linux - TestCafe:导出命令在 Linux 中不起作用
- javascript - 前台的新选项卡仅在浏览器最小化时有效
- nativescript - Nativescript/Angular - 在蓝牙迷你打印机中打印
- node.js - 是否可以在 req.body 中添加额外的字段并使用 nodejs 将它们添加到集合中?
- python - 如何从avro文件中删除数据
- camera-calibration - 宽视野和大基线鱼眼立体相机校正
- r - 匹配igraph中的顶点和边缘颜色
- python - 使用 Tweepy 提取时从经过验证的帐户中过滤掉推文