繁体   English   中英

如何在服务器端检索文件,使用 ajax 为节点/快递应用程序发送

[英]How to retrieve file on server side send with ajax for a node/express app

我有一个 Node/Express 应用程序,我想发送一个带有表单的文件,我想用 ajax 发送它,以便我可以处理服务器响应。

到目前为止,我的表格是:

                    <form method='POST' enctype='multipart/form-data' id='excelform'>
                        <input type='file' id='target_file' name='target_file' required>
                    </form>
                    <button class='btn btn-menu3 align-self-end' onClick='excel_email9f();'>Enviar</button>

我有一个按钮,它为 ajax 请求调用以下函数:

function excel_email9f(){

    var data = new FormData();
    var file = $('#target_file')[0].files[0];

    data.append('file', file);

    $.ajax({
        type: "POST",
        enctype: 'multipart/form-data',
        url: "/Excelemail9f",
        data: data,
        processData: false,
        contentType: false,
        cache: false,
        timeout: 600000,
        success: function (data) {

            var response = data.q0;
            alert(response);

        },
        error: function (e) {

            console.log("ERROR : ", e);

        }
    });

};

我可以访问该文件及其名称等属性。

在服务器端,我有这条路线

app.post('/Excelemail9f',function(req,res){

    // checking req.files is empty or not
    if (Object.keys(req.files).length == 0) {
        return res.status(400).send('No files were uploaded.');
    }
    console.log('name: ' + req.files.target_file.name);
    let target_file = req.files.target_file;

    // target_file.mv(path, callback)
    target_file.mv(path.join(__dirname, 'uploads', target_file.name), (err) => {
        if (err) throw err;

        res.send(JSON.stringify({q0 : 0})); 
    })

})

我如何访问服务器端的文件,我使用req.files.target_file但我收到以下错误:

类型错误:无法读取未定义的属性“名称”

post荷兰国际集团的数据作为FormData对象,但你指的是作为文件名的HTML输入元素的ID。 您可以通过调用data.append('file', file);填充FormData对象data.append('file', file); ,所以你需要通过req.files.file而不是req.files.target_file来引用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM