【问题标题】:Using PHP or jQuery to submit a dynamically generated file使用 PHP 或 jQuery 提交动态生成的文件
【发布时间】:2023-04-03 04:56:01
【问题描述】:

我正在尝试与另一家公司的“API”进行交互。他们的 API 实际上是一个文件上传表单,它要求一个 CSV 文件。这是一个标准的 HTML 表单,其元素如下:

<input type="file" id="inputFileUploadFile" name="UploadFile">

我有一个页面,用户可以在其中查看一组表数据。我正在寻找一种方法来提供一键式解决方案,用户可以在该解决方案中查看表数据并将其作为文件提交到这个所谓的 API。

以 CSV 格式生成数据非常简单。具体来说,问题是如何将这些数据放入表单元素并提交?

我可以使用 jQuery 来操作和提交隐藏的 HTML 表单,也可以使用 PHP 直接提交表单。任何一种格式的答案都有效。

【问题讨论】:

  • 你好:- 使用 jquery,您可以使用 FormData 类对象并将文件分配给它,然后将此数据发送到服务器。如果这种方法适合您,我可以想出一些答案。跨度>
  • 请尝试如果有任何问题请告诉我,我很乐意提供帮助。

标签: php jquery file-upload forums


【解决方案1】:

一种方法是使用 FormData Class 。下面找到下面的示例代码。当您在按钮点击等上调用帖子时,您需要在函数内部调用它。

        --- add  enctype to form tag----  
       <form id="upload_form" enctype="multipart/form-data">

        -- on submit create a new object assing key value pairs and post it .

        var formData = new FormData($('#upload_form')[0]);

        formData.append('key1', 'val1');
        formData.append('key2', 'val2');
        // Main magic with files here
        formData.append('image', $('input[type=file]')[0].files[0]); 


        $.ajax({
            url: 'Your url here',
            data: formData,
            type: 'POST',
            // THIS MUST BE DONE FOR FILE UPLOADING
            contentType: false,
            processData: false,
            // ... Other options like success and etc
        })

【讨论】:

    【解决方案2】:

    感谢 Yashveer Singh,我能够将所有部分组合在一起。这是 jQuery/javascript 版本:

    //first, create a Blob object. Assume that variable myCSV has our CSV data as a string
    //The Blob constructor requires an array, so place in brackets [].
    var myblob = new Blob([myCSV], {type: 'text/csv'});
    
    //Create a new FormData object.
    var myFD = new FormData();
    //Add our file (the blob) to it.
    myFD.append('htmlFormName', myblob, 'someFileName.csv');
    //We can also append other fields if necessary.
    myFD.append('inputName', 'inputValue');
    
    //If we're using jQuery to send the form...
    $.ajax({
        url: 'http://remotewebsite.com/formhandler.php',
        type: 'POST',
        data: myFD,
        processData: false, // <-- important!
        contentType: false, // <-- important!
        success: function(data) {
            console.log('Posted successfully.');
        }
    });
    

    【讨论】:

    • 太棒了 :) 编码愉快 :)
    猜你喜欢
    • 1970-01-01
    • 2015-12-05
    • 2016-01-04
    • 2012-01-02
    • 2019-07-31
    • 2013-07-07
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多