使用 PHP 或 jQuery 提交动态生成的文件



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

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

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

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

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

一种方法是使用 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
        })

感谢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.');
    }
});

最新更新