上传文件

详述一下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

相关文章
相关标签/搜索