利用laravel+ajax实现文件上传功能方法示例


Posted in PHP onAugust 13, 2017

前言

大家都知道,早期的XMLHttpRequest不支持文件上传,一般用第三方js插件或者flash,现在可以借助XMLHttpRequest Level 2 的FormData对象实现二进制文件上传,正好最近工作中遇到了这个需求,所以本文就来给大家总结下实现的方法,话不多说了,来一起看看详细的介绍吧。

示例代码

@extends('layouts.art')
@section('content')

<form class="form-horizontal" id="avatar"> 
   {{ csrf_field() }}
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">名字</label>
 <div class="col-sm-8">
  <input type="title" class="form-control" id="title" name="title">
 </div>
 </div>


 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">头像</label>
 <div class="col-sm-8">
  <input type="file" class="form-control" id="title" name="photo">
 </div>
 </div>


 <div class="form-group">
 <div class="col-sm-offset-2 col-sm-10">
  <a class="btn btn-default" onclick="uploadInfo()">上传</a>
 </div>
 </div>
</form>

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> 
<script type="text/javascript"> 
function uploadInfo() { 
  var formData = new FormData($("#avatar")); 
  $.ajax({ 
   url: "{{url('photo')}}",
   type: 'POST', 
   data: formData, 
   contentType: false, 
   processData: false, 
   success: function (returndata) { 
    console.log(returndata); 
   }, 
   error: function (returndata) { 
    console.log(returndata); 
   } 
  }); 
} 

</script>

@endsection
//生成路径,图片存储
  $ext = $request->photo->getClientOriginalExtension();
  $cover_path = "images/album/covers/" . time() . $ext; 
  $name = "photo".time();
  $src = "images/album/photos/". $name .".jpg";
  Image::make($request->photo)->save(public_path($src));*/

 //批量上传图片

  foreach ($request->photo as $key => $value) {
   //生成路径,图片存储
   $prefix = "photo".mt_rand(1,1000);
   $Origname = $value->getClientOriginalName();
   $name = $prefix.$Origname;
   $src = "images/album/photos/".$name;
   $realPath = $value->getRealPath();
   Storage::disk('uploads')->put($src,file_get_contents($realPath));
  }

更多参考

https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/UsingFormDataObjects

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/UsingXMLHttpRequest#Submittingformsanduploading_files

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP中在数据库中保存Checkbox数据(2)
Oct 09 PHP
php数组总结篇(一)
Sep 30 PHP
php 页面执行时间计算代码
Dec 04 PHP
解析php中获取系统信息的方法
Jun 25 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 PHP
PHP数组基本用法与知识点总结
Jun 02 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
php数据序列化测试实例详解
Aug 12 #PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 #PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 #PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 #PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 #PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 #PHP
You might like
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python常见数制转换实例分析
2015/05/09 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
html5 标签
2009/07/16 HTML / CSS
校运会入场式解说词
2014/02/10 职场文书
战略合作意向书范本
2014/04/01 职场文书
法人代表授权委托书
2014/04/08 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python