现如今在市面上常见的web开发理念一般是两种,一种是MVC格式的,比较传统,而项目较大的开发,一般由团队完成,而MVC格式就显得有些不够合理 。于是 ,在这种情况下诞生了另外一种开发理念,我们叫MVVC格式 。这种开发理念是把前端和后端完全的分离开来。页面的编写及页面的渲染由前端来完成,而后端则负责提供数据。由于开发理念的不同,后端在提供数据的时候程序也是不同的。今天就来分享一下使用TP5来开发的,适用于MVVC开发理念,由后端提供数据的关于文件上传的接口。

首先创建一个Upload控制器用来处理上传文件的逻辑代码。以后台的模块为例:

//命名空间
name appadminController;
//引入controller公共文件
use thinkController;
​
//创建上传文件的类并继承公共的controller文件
class Upload extends Controller
{//允许文件上传的大小private $size = 1024 * 1024 * 3;//允许文件上传的后缀private $ext = 'jpg,jpeg,pjpeg,png,gif';//允许文件上传的类型private $type = 'image/jpeg,image/png,image/gif';//创建一个上传单图片的方法public function uploadImage(){//接收参数(接收前面的请求参数)$params = input();//获取name属性值为image的上传文件的信息$file = request()->file('image');//对上传的文件进行检测if(empty($file)){//错误信息返回数据的方法$this->fail('请上传文件');}//文件路径,在public里面创建一个文件夹uploads用来存储上传的图片$dir = ROOT_PATH . DS . 'public' . DS . 'uploads';//如果没有手动创建,则自动创建if(!is_dir($dir)) mkdir($dir);//移动图片,把图片从临时文件夹中移动到指定的文件夹中并做检测$info = $file ->validate(['size'=>$this->size,'ext'=>$this->ext,'type'=>$this->type])-> move($dir);//如果上传失败返回错误信息if(!$info){$this->fail($file->getError());}//上传成功返回图片路径给前端$image = DS . 'uploads' . DS . $info->getSaveName();//成功信息返回数据的方法$this->ok($image);}//上传多个文件的方法public function images(){//接收参数$params = input();//获取name属性值为images的上传文件数组$files = request() -> file('images');//检查文件是否上传if(empty($files)){$this->fail('请上传文件');}//检查文件是否以数组的形式上传if(!is_array($files)){$this->fail('请以数组的形式批量上传文件');}//由于是多图上传,一些不可控的原因,也许有些会成功,有些会失败,所以返回数据时分为//的部分以及失败的部分$data = ['success' => [],'error' => []];//文件路径,在public里面创建一个文件夹uploads用来存储上传的图片$dir = ROOT_PATH . DS . 'public' . DS . 'uploads';//如果没有手动创建,则自动创建if(!is_dir($dir)) mkdir($dir);foreach($files as $file){//同单张图片一样的操作$info = $file ->validate(['size'=>$this->size,'ext'=>$this->ext,'type'=>$this->type])-> move($dir);if($info){//上传成功把图片路径添加进成功的数组$data['success'][] = DS . 'uploads' . DS . $info->getSaveName();}else{//上传失败把错误信息添加进失败的数组$data['error'][] = [//获取上传文件的名称(图片原名)'name' => $file->getInfo('name'),'message' => $file->getError()]}}//再把$data返回给前端$this->ok($data);}
}
​
​

以上就是上传图片的两个接口了,前端可以凭此返回的数据进行页面渲染。此后附上返回成功数据和错误信息的两个方法。具体的类就不做详细的说明了,就写一下这两个方法。

    /*** 成功的响应,返回一个json格式的数据* $data array  返回数据* $code int    错误码,可以自定义  可以省略* $msg  string 错误信息,可以自定义 可以省略.*/
public function ok($data = [],$code=200,$msg='success')
{$res = ['code' => $code,'msg' => $msg,'data' => $data];echo json_encode($res,JSON_UNESCAPED_UNICODE);die;
}
​/*** 失败的响应* $msg  string 错误信息* $code int    错误码,可以自定义  可以省略.*/
public function fail($msg='error',$code = 400)
{$res = ['code' => $code,'msg' => $msg,];echo json_encode($res,JSON_UNESCAPED_UNICODE);die;
}
​
​

以上代码仅供参考,具体的情况还得具体的分析。

antd upload手动上传_基于MVVCTP5的文件上传相关推荐

  1. springboot 上传文件_基于SpringBoot的文件上传

    在实际的企业开发中,文件上传是最常见的功能之一,SpringBoot集成了SpringMVC常用的功能,当然也包含了文 件上传的功能,实现起来没有太多的区别. 下面我们来讲解一下,使用SpringBo ...

  2. angularjs java 文件上传_学习使用AngularJS文件上传控件

    前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用angular,且不想因为一个上传功能又引入一个jque ...

  3. ie6多文件上传_一个好的“文件上传”功能必须要注意的这些点你都知道吗?

    检查上传文件扩展名白名单,不属于白名单内,不允许上传:[前端和后端都要做好校验] 上传文件的目录必须是http请求无法直接访问到的.如果需要访问的,必须上传到其他(和web服务器不同的)域名下,并设置 ...

  4. java jsp 文件上传_用JSP编写文件上传

    用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...

  5. java muti实现图片上传_使用MultipartFile实现文件上传

    项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...

  6. ftp服务器通常提供文件上传和,基于FTPClient的文件上传至Nginx服务器

    一.Nginx做图片服务器 通常一个小型系统的图片,保存在应用服务器的项目目录下即可,但是对于一个中型规模的系统,就需要使用独立的图片服务器,单独分离图片的访问.目的是一方面缓解应用服务器的访问压力, ...

  7. antd upload手动上传_SpringBoot 如何上传大文件?

    最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  8. vue前端上传文件夹的插件_基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件...

    1. 前言 之前公司要在管理系统中做一个全局上传插件,即切换各个页面的时候,上传界面还在并且上传不会受到影响,这在vue这种spa框架面前并不是什么难题.然而后端大佬说我们要实现分片上传.秒传以及断点 ...

  9. html标签手册 360doc,基于AJAX的文件上传控件NetAdvantage for jQuery

    NetAdvantage for jQuery 是一款全新的轻量级.高性能的jQuery控件,包含了在线的Video播放控件,基于AJAX的文件上传控件,快速且强大的表格控件,以及创建和编辑Word. ...

最新文章

  1. keepalived(4)——演练故障出现时keepalived的状态
  2. .Net Framework 4.5 zip压缩原生支持
  3. 【BAT面试现场】如何判断一个数是否在40亿个整数中?
  4. 图的m着色问题(洛谷-P2819)
  5. 《统计学习方法》代码全解析——第一部分统计学习方法概论
  6. Vue报错:npm run start npm ERR! missing script: start
  7. java frameview_Java FrameLayout.removeView方法代码示例
  8. [UE4]复制引起的重复对象
  9. Eclipse 9.x 10.0 之破解详细步骤
  10. 全网最详细的ensp模拟器安装教程
  11. [lammps安装教程]lammps串行版安装教程
  12. 怎么从已有文件中挑选需要的文字重新生成新文件_CAD问题全面解答(几乎涵盖了CAD使用的全部问题)...
  13. Java实现音频格式转换 WAV—mp3,可使音频压缩
  14. Excerpt-16 March, 2019
  15. SLURM Array Job
  16. 二十三、正则表达式中的“r”含义
  17. 手把手教你拿到小世界里妹子的 QQ 号 !
  18. 打开CMD命令行窗口的几种方式
  19. android和js交互的代码,Android与JS代码交互
  20. vue 下载lodop时页面数据丢失问题

热门文章

  1. SecureCRT SSH 失败 Key exchange failed 解决方法
  2. 将Kinect的v2.0 Motion存储到BVH文件中
  3. 用java来实现FIFO先进先出的队列
  4. Map集合转换成实体类对象,实体类对象转换为map集合,互转工具类
  5. STM32 LWIP实验第一章节--了解以太网
  6. python django异步访问_初试Ajax异步请求(基于Django框架)
  7. linux向上翻页_Linux下vim编辑器命令大全
  8. js方法点击复制文本
  9. Angualr 输入文本框监听enter回车键和esc键方法使用(附常用的键盘事件对应的键码)
  10. 如何创建xsl文件 xml_EXCEL知识分享 I 连载如何快速创建XML文件