在写博客时需要上传修改头像和上传文件时,需要用到上传,用一套方法来控制图片和文件的上传

**第一步:构建上传页面:** ```
php artisan make:exception UploadException//1.创建类
namespace App\Exceptions;//2.书写异常方法,规定用render方法
public function render(){
//response也是一个规定用的方法return response ()->json ( [ 'code' => 403 , 'message' => $this->getMessage () ] , 200 );}
3.调用在第五步里的文件上传大小类型处理中
**第五步:创建一个服务类UploadServer,来实现文件上传,只是处理上传,上传到服务器上,如果你用的是本地服务器就是上传到本地服务器的,如果是阿里云服务器,就会上传到阿里的服务器**
在app下手动创建server目录,在server目录里创建一个UploadServer这个类,然后创建方法:upload方法,但下面的上传需要借助第三方上传的组件,需要安装组件
composer require houdunwang/laravel-upload//安装第三方组件
php artisan vendor:publish//生成配置文件
namespace App\Providers;
//注册事件protected $subscribe = [UploadSubscriber::class];
namespace App\Server;
public function upload($file,$type){//在上传之前调用$this->check($file,$type);$event = new UploadEvent($file);event($event);##上传成功的文件yreturn $event->getFile();
}
//check这个方法是要拦截步合法的文件大小和类型,要在上传之前做好拦截
public function check($file,$type){//getSize这个方法是laravel自带的方法,获得文件的大小$size=$file->getSize();// hd_config是在help中定义的函数,可以读取配置项的值if($size>hd_config('upload.'.$type.'_size')){//这是个抛出异常的类,在下面的第步介绍throw new UploadException('文件体积过大');}//getClientOriginalExtension这个是laravel自带的方法,获得文件的后缀$ext=strtolower($file->getClientOriginalExtension());if(!in_array($ext,explode(',',hd_config('upload.'.$type.'_type')))){throw new UploadException('文件上传不合法');}}
**第六步:创建一个Attachment模型来创建一个attachment的表格,来存储上传到服务器的图片信息**

创建模型并生成迁移文件:

php artisan make:model -m Model/Attachment

在模型里标注可允许向数据库填充的数据

<!--$guarded表示不允许写入数据库的字段,$fillable是表示可以写入数据库的字段-->
protected $guarded=[];
<!--protected $fillable = ['filename','path'];-->

在迁移文件里添加字段:

$table->string ('path')->comment('上传文件路径');
$table->string ('user_id')->comment('谁上传的');

创建表:

artisan migrate

创建模型关联:

namespace App;//User.php
public function attachment ()
{return $this->hasMany ( Attachment::class );
}
**第七步:上传图片我们把它构建在util中,属于一个小的上传工具**

在工具类里创建一个UploadController这个类,构建一个upload方法来完成上传任务

namespace App\Http\Controllers\Util;
//首先我们要完成上传必须注入Request,UploadServer ,Attachment 这三个类来帮助,Request 来帮助获取提交的数据,UploadServer 负责文件上传,Attachment 负责写入数据库
public function upload(Request $request, UploadServer $uploadServer ,Attachment $attachment){//获取文件信息$file=$request->file('file');//如果文件存在则执行上传if($file){//isImage是我们在下面定义的一个方法,来判断它是否是图片上传,在这里如果是图片则$type就是image,就会读取图片上传的配置项,如果不是图片则$type就是文件,在上传中会读取文件的配置项$path=  $uploadServer->upload($file,$this->isImage($file)?'image':'file');}//存储到数据表auth()->user()->attachment()->create(['path'=>url($path)]);return ['file'=>url($path),'code'=>0];}
 //此方法用来判断是否是文件是不是图片public function isImage($file){//getClientOriginalExtension获取文件后缀$ext= strtolower($file->getClientOriginalExtension());//判断这个文件的类型是否在图片的一些基本格式之内return in_array($ext,['jpg','png','gif']);}
**图片列表的显示** ``` public function lists () { $data = Attachment::paginate(1); $attachment = $data->toArray(); foreach($attachment['data'] as $k=>$v){ $attachment['data'][$k]['url'] = $v['path']; } return ['code'=>0,'data'=>$attachment['data'],'page'=>$data->links() . '']; } ```

hdjs-图片 文件上传相关推荐

  1. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  2. Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪_实现在线预览Office文档

    Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪 前置条件 安装LibreOffice 安装OpenOffice 安装Unoconv 安装ImageMagick.x86_64 安装G ...

  3. springmvc图片文件上传接口

    springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller;import java.awt.image.Buffere ...

  4. axios文件上传 formdata_基于业务场景下的图片/文件上传方案总结

    图片/文件上传组是企业项目开发中必不可少的环节之一, 但凡涉及到用户模块的都会有图片/文件上传需求, 在很多第三方组件库(ant desigin, element ui)中它也是基础组件之一. 接下来 ...

  5. php是视频还是图片格式,php 视频、音频和图片文件上传,该如何解决

    PHP code<?php ob_start(); $uploadDir = dirname(__FILE__).'/upload'; //自动创建目录 if(!file_exists($upl ...

  6. Java实现图片文件上传

    Java实现图片文件上传 Java实现后台图片上传,将上传图片的接口进行分层,便于维护接口. 接口部分(interface) 将接口分为单图片上传以及多图片上传 public interface Fi ...

  7. php中图片文件上传,显示缩略图

    php中图片文件上传,显示缩略图 htm代码块: <meta charset="utf-8" /> <style>img {max-width: 100px ...

  8. php 上传本地图片到服务器上,PHP如何将图片文件上传到另外一台服务器上

    说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...

  9. android webview 多文件上传,Android网页WebView图片文件上传的问题

    Android网页WebView图片文件上传的问题 发布时间:2020-07-13 22:48:15 来源:51CTO 阅读:5922 作者:拾荒者老大 在安卓下,webview上传图片点击是没用的, ...

  10. 原生态的ajax如何上传文件,原生ajax和iframe框架实现图片文件上传的两种方式

    大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参 ...

最新文章

  1. CISSP备考系列之行政性管理[10-37]
  2. 干掉系统害群之马 轻轻松松“杀”进程
  3. Xib/Storyboard碰到不同版本的Xcode真是想死啊!
  4. MySQL无中心化集群_MySQL Plus 如何做到无中心化、数据强一致性、秒级切换?
  5. matlab dbc文件,一种EXCEL转DBC文件的生成方法及装置与流程
  6. 计算机与生活的ppt,计算机应用基础说课PPT
  7. 2022年全球及中国多功能压力锅市场份额预测与投资竞争格局调查报告
  8. 北大计算机直博生,直博生培养方案-北京大学.doc
  9. 【重磅】云栖社区2017年度内容特辑
  10. win7网络里面没有计算机,Win7没有无线网络选项教你完美解决
  11. non-resource variables are not supported in the long term
  12. October 12th 2017 Week 41st Thursday
  13. CAMs激活图可视化系列——GradCAM
  14. 颈椎腰椎有病揉此穴,百用百灵,受用无穷 !
  15. Kali Linux渗透测试——信息收集
  16. 生成条形码显示到界面
  17. 定位后端开发,有哪些书籍值得推荐?
  18. arm-linux东东之nand
  19. 高校/中职人工智能实验室建设
  20. 如果经验有用 读书干嘛

热门文章

  1. IM多点登录与消息漫游架构随想
  2. 基于springboot老年人健康体检系统(带论文)
  3. 大一python选择题题库及答案_大学计算机python选择填空题库及答案
  4. 数据集成-2-xml
  5. VS2019C++编译GDAL3.3.2+SQLite3+PROJ6+GEOS3.7.3+HDF4+HDF5(保姆级教程)
  6. FPGA基础知识21(PL控制PS端DDR的设计)
  7. Java面试题目(非通用模板)
  8. 视频剪辑必备,5个音效素材网
  9. 【淘宝装修】PS DW 介绍 教程 代码(终极篇)
  10. 顺丰科技机器学习面试