利用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 mysql索引问题
Jun 07 PHP
php中计算时间差的几种方法
Dec 31 PHP
ezSQL PHP数据库操作类库
May 16 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
文件上传类
2006/10/09 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Python中new方法的详解
2019/01/15 Python
python多任务之协程的使用详解
2019/08/26 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
Python request post上传文件常见要点
2020/11/20 Python
python re模块常见用法例举
2021/03/01 Python
大学四年学习的自我评价分享
2013/12/09 职场文书
大学生蛋糕店创业计划书
2014/01/13 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS