[聚合文章] form表单通过ajax提交文件

Ajax 2017-10-07 20 阅读

例子:在页面上传一个csv文件,web服务器端用php解析上传的csv文件并入库
前端页面代码:

<form enctype="multipart/form-data">    <p>上传csv文件<input type="file" id="csv_file" name="csv_file"/></p>    <button id="import">导入</button></form><script type="application/javascript">    $("#import").click(function () {        var files = $('#csv_file').prop('files');        var data = new FormData();        data.append('csv_file', files[0]);        $.ajax({            type: 'POST',            url: "http://xxxx/import_csv",            data: data,            cache: false,            processData: false,            contentType: false,            success: function (ret) {                alert(ret);            }        });    });</script>

form的enctype必须是multipart/form-data才可以上传多个文件,ajax通过FormData来上传数据,ajax的cache、processData、contentType均要设置为false。
cache设为false是为了兼容ie8,防止ie8之前版本缓存get请求的处理方式。
contentType设置为false原因:https://segmentfault.com/a/1190000007207128
processData:要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

php代码:

        $uploadFile = $_FILES['csv_file'];        $fileName = $uploadFile['tmp_name'];        $fHandle = fopen($fileName, 'r');        while ($data = fgetcsv($fHandle)) {            //入库处理        }        fclose($fHandle);

php通过$_FILES读取上传的文件,通过tmp_name可以获取上传文件路径,通过fgetcsv函数读取csv文件数据。

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。