例子:在页面上传一个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文件数据。
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。