Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用php上传Sweet Alert 2 jQuery文件_Javascript_Php_Jquery_File - Fatal编程技术网

Javascript 用php上传Sweet Alert 2 jQuery文件

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

我正试图用jQuery和php在Sweet Alert 2模式中创建一个文件上传程序。这是我的代码,但它不起作用:我怎样才能让它起作用

多谢各位

HTML(打开带有Sweet Alert 2的模式的按钮):

我在控制台中的输出是:

FormData{}proto:FormData OK客户端 {输入:“PHP已启动”,tmp_路径:null,新_路径:null,文件名:null,上载:null} 输入:“PHP已启动” 文件名:空 新路径:空 tmp_路径:空 上传:空 原型:对象


如您所见,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);
}