##从前台获取文件:
- 前台代码
<input id='location' type="text" class="controls" disabled>//用来显示选择的文件
<input type="button" id="i-check" value="选择报名表" class="btn btn-sm btn-success" onclick="$('#i-file').click();" style="margin-top: -2px">
<input type="file" id='i-file' name="examfile" accept=".xlsx,.xls" onchange="$('#location').val($('#i-file').val());" style="display: none">
//隐藏的存文件的目录
前台获取文件为3个input框:
-
第一个type=“text”,用来显示获取到文件的路径;
-
第二个type="button"点击按钮;
-
第三个type="file"隐藏的获取文件的表单。
流程:
当button 触发click事件,则调用$(’#i-file’).click();触发file,当file类型的input获取到值(文件路径),则change事件将路径值显示在location。
jQuery的 .val() - 设置或返回表单字段的值。
##后台接收文件:
获取:
通过调用request对象的file()方法获取。
if(request()->isPost()){
$file = request()->file('examfile');
if (!$file)
{
return $this->error('未选择任何文件','JoinController/joinMultiple');
}
}
移动(上传):
内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。
// 移动到框架应用根目录/public/uploads/ 目录下
$file_url = ROOT_PATH . 'public' . DS . 'upload'; //. DS . 'excel'
$config = [
'size' => 2097152,
'ext' => 'xlsx,xls'
];
$info = $file->validate($config)->move($file_url); //2MB
其中validata()是一个格式验证,传入参数为最大字节size和限定的后缀ext;
/**
* 设置上传文件的验证规则
* @param array $rule 验证规则
* @return $this
*/
public function validate($rule = [])
{