Javascript 用php上传Sweet Alert 2 jQuery文件
我正试图用jQuery和php在Sweet Alert 2模式中创建一个文件上传程序。这是我的代码,但它不起作用:我怎样才能让它起作用 多谢各位 HTML(打开带有Sweet Alert 2的模式的按钮): 我在控制台中的输出是: FormData{}proto:FormData OK客户端 {输入:“PHP已启动”,tmp_路径:null,新_路径:null,文件名:null,上载:null} 输入:“PHP已启动” 文件名:空 新路径:空 tmp_路径:空 上传:空 原型:对象Javascript 用php上传Sweet Alert 2 jQuery文件,javascript,php,jquery,file,Javascript,Php,Jquery,File,我正试图用jQuery和php在Sweet Alert 2模式中创建一个文件上传程序。这是我的代码,但它不起作用:我怎样才能让它起作用 多谢各位 HTML(打开带有Sweet Alert 2的模式的按钮): 我在控制台中的输出是: FormData{}proto:FormData OK客户端 {输入:“PHP已启动”,tmp_路径:null,新_路径:null,文件名:null,上载:null} 输入:“PHP已启动” 文件名:空 新路径:空 tmp_路径:空 上传:空 原型:对象 如您所见,p
如您所见,php启动,但没有文件被传递到服务器。我使用了一种基于视图中输入文件和/对象的解决方案。 使用Sweetalert的输入文件类型时,将创建带有
swal2 file
css类的输入元素:
然后,您可以使用Sweetalert事件onBeforeOpen
通过FileReader对象读取文件数据。最后,您可以使用带有FormData对象的ajax请求发送文件。
这将是js源代码:
$('#swal_upload').click(function() {
Swal({
title: 'Select a file',
showCancelButton: true,
confirmButtonText: 'Upload',
input: 'file',
onBeforeOpen: () => {
$(".swal2-file").change(function () {
var reader = new FileReader();
reader.readAsDataURL(this.files[0]);
});
}
}).then((file) => {
if (file.value) {
var formData = new FormData();
var file = $('.swal2-file')[0].files[0];
formData.append("fileToUpload", file);
$.ajax({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
method: 'post',
url: '/file/upload',
data: formData,
processData: false,
contentType: false,
success: function (resp) {
Swal('Uploaded', 'Your file have been uploaded', 'success');
},
error: function() {
Swal({ type: 'error', title: 'Oops...', text: 'Something went wrong!' })
}
})
}
})
})
在服务器端,使用Laravel Php framework,您可以通过以下函数获取文件:
public function uploadFile(Request $request)
{
if ($request->hasFile('fileToUpload')) {
$file_name = $request->file('fileToUpload')->getClientOriginalName();
$earn_proof = $request->file('fileToUpload')->storeAs("public/files/", $file_name);
}
return response()->json(['result' => true], 200);
}
我使用了一个解决方案,该解决方案基于来自视图的输入文件和/对象。 使用Sweetalert的输入文件类型时,将创建带有
swal2 file
css类的输入元素:
然后,您可以使用Sweetalert事件onBeforeOpen
通过FileReader对象读取文件数据。最后,您可以使用带有FormData对象的ajax请求发送文件。
这将是js源代码:
$('#swal_upload').click(function() {
Swal({
title: 'Select a file',
showCancelButton: true,
confirmButtonText: 'Upload',
input: 'file',
onBeforeOpen: () => {
$(".swal2-file").change(function () {
var reader = new FileReader();
reader.readAsDataURL(this.files[0]);
});
}
}).then((file) => {
if (file.value) {
var formData = new FormData();
var file = $('.swal2-file')[0].files[0];
formData.append("fileToUpload", file);
$.ajax({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
method: 'post',
url: '/file/upload',
data: formData,
processData: false,
contentType: false,
success: function (resp) {
Swal('Uploaded', 'Your file have been uploaded', 'success');
},
error: function() {
Swal({ type: 'error', title: 'Oops...', text: 'Something went wrong!' })
}
})
}
})
})
在服务器端,使用Laravel Php framework,您可以通过以下函数获取文件:
public function uploadFile(Request $request)
{
if ($request->hasFile('fileToUpload')) {
$file_name = $request->file('fileToUpload')->getClientOriginalName();
$earn_proof = $request->file('fileToUpload')->storeAs("public/files/", $file_name);
}
return response()->json(['result' => true], 200);
}
当问题陈述只是简单的时,很难提供解决方案。请你的问题更完整地描述一下你预期会发生什么,以及这与实际结果有什么不同。请参阅,以获取关于什么是好的解释的提示。您不能使用ajax以这种方式上载数据。特别是对于“内容类型”:“表单数据”@PaunNarcisIulian您有解决方案吗?当问题陈述只是简单的,很难提供解决方案。请你的问题更完整地描述一下你预期会发生什么,以及这与实际结果有什么不同。请参阅,以获取关于什么是好的解释的提示。您不能使用ajax以这种方式上载数据。尤其是“内容类型”:“表单数据”@PaunNarcisIulian您有解决方案吗?
public function uploadFile(Request $request)
{
if ($request->hasFile('fileToUpload')) {
$file_name = $request->file('fileToUpload')->getClientOriginalName();
$earn_proof = $request->file('fileToUpload')->storeAs("public/files/", $file_name);
}
return response()->json(['result' => true], 200);
}