首先前端代码
<div> <input type="file" id="monofile"> <input type="button" value="上传" id="uploade"> </div> <span style="color: red" id="img"></span> </body> </html> <script> $("#uploade").click(function () { //FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单" var formData = new FormData(); formData.append("file",$("#monofile").get(0).files[0]); $.ajax({ url:'http://www.item.skill.com/monofile',//接口地址 type:'post', data:formData, dataType:'json', cache:false,//上传文件不需要缓存 contentType:false, //在formData 对象里面已经声明了属性 这里需要关闭 processData:false, //因为data值是FormData对象,不需要对数据做处理。 success:function (res) { console.log(res); if (res.code==200){ $("#img").html(res.data); //上传后的路径展示到前端 }else { alert(res.msg); } } }) }) </script>
后端代码
public function monoFile() { //获取文件 $file = $this->request->file('file'); //判断文件是否为空 if (!empty($file)){ // 移动到框架应用根目录/public/uploads/goods 目录下 $info = $file->validate(['size'=>1024*1024*2,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads'.DS.'goods'); if(!$info){ // 上传失败获取错误信息 $msg = $file->getError(); self::fail(500,$msg);//这里是已经封装好的方法 返回状态码和提示信息的json即可 }else{ // 成功上传后 获取上传信息 返回数据 $logoPath = DS.'uploads'.DS.'goods'.DS.$info->getSaveName(); self::ok(200,'上传成功',$logoPath); } } }