详述一下php上传文件的方法
HTML中:
<input type="file" name="formName" id="formName" onChange="uploadRar('formName','formName','passport_xls')"/>
<input type="hidden" name="passport_xls" id="passport_xls" value=""/>
<input type="file">是一个 上传文件 的控件。页面上会 有一个按钮点击弹出“上传文件”对话框,还有一行文本显示 所选择的文件的路径及文件名。
用该控件选择了一个文件后,文件会被存储到服务器下特定的“上传临时文件夹”。在php.ini中有配置: upload_tmp_dir = "\xampp\tmp" 。
同时会添加文件信息到$_FILES。内容如
$_FILES['formName']= Array//‘formName'是标签的name,作为$_FILES的索引,文件的标识
(
[name] => list.txt //文件名
[type] => text/plain //文件类型
[tmp_name] => D:\xampp\tmp\php2EFF.tmp //上传后的文件名
[error] => 0 //0上传成功,-1上传失败
[size] => 486 //文件大小
)
第二个hidden控件用来存储 上传文件最终的文件名(包含地址)
JS中:
// 'formName','formName','passport_xls'
function uploadRar(file_id,fileName,excle_hidden){
$.ajaxFileUpload({
url:'/?app=upload&act=upFile', //上传文件的服务端
secureuri:false, //是否启用安全提交
dataType: 'json', //数据类型
fileElementId:file_id, //表示文件域ID
data:{formName:fileName},
success: function(data) {
if(1 == data.success){
$("#"+excle_hidden).val(data.msg);
}
},
error: function (data, status, e) {
alert(e);
}
});
}
jquery的ajaxFileUpload函数详见: 点击打开链接
本例id和name取得易混淆。这里fileElementId:file_id可能是其内部机制需要;
而data:{formName:fileName}是作为post参数传到URL处,用来作$_FILES的索引获取文件信息的
URL指定的app、act处理后,若成功则调用success:function回调函数。上传的文件的最终文件名、路径 被赋给 hidden控件备用
PHP中:
$doUpload = @move_uploaded_file ( $_FILES [$this->FormName]['tmp_name'], $this->Directroy . $fileName );
这是一个转移文件的函数 从默认路径+文件名 转移到 想要的路径+文件名
PS:参考项目中的
boss站点,app=export,act=exportArticle
includes/libraries/upload.lib.php