利用laravel+ajax实现文件上传功能方法示例
作者:daisy 发布时间:2024-05-03 15:28:02
标签:laravel,ajax,文件上传
前言
大家都知道,早期的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
来源:https://fjun.org/laravel-ajax/


猜你喜欢
- 工具:Jupyter notebook + Anaconda游戏规则: * 一种玩法是买尾号。2元一个数字,中奖是20元。每个数字出现的概率
- 开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题。出现乱码是字符集的原因一般而言和逻辑没有太大关系,也就是说整个系统大的方向没
- drop procedure if exists pro_rep_shadow_rs; delimiter | --------------
- 最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下:1、scatter函数原型2、其
- 首先 编辑views.py文件每个响应对应一个函数 函数必须返回一个响应函数必须存在一个参数 一般约定为request每个响应函数 对应一个
- 前言Python 是每个程序员都喜欢的语言,因为它易于编码和易于阅读的语法。但是,你知道 python 有一些很酷的技巧可以用来让事情变得更
- 数据透视表(Pivot Table)是 Excel 中一个非常实用的分析功能,可以用于实现复杂的数据分类汇总和对比分析,是数据分析师和运营人
- 使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等。其可操作性很强,如可以直接使用“show da
- LRULRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访
- 之前一直对于python类的继承机制认知的比较混乱,今天学习记录一下。(1)首先使用直接继承的方式class parent():  
- testify在团队里推行单元测试的时候,有一个反对的意见是:写单元测试耗时太多。且不论这个意见对错,单元测试确实不应该太费时间。这时候,一
- 本文实例讲述了JS+CSS实现仿雅虎另类滑动门切换效果。分享给大家供大家参考。具体如下:这是仿照雅虎特色服务的一个Tab滑动切换效果,核心是
- 本文实例讲述了python实现多进程按序号批量修改文件名的方法。分享给大家供大家参考,具体如下:说明文件名命名方式如图,是数字序号开头,但是
- 一、版本对比首先要说的是,Python的版本,目前主要分为两大类:Python 2.x的版本的,被称为Python2:是目前用的最广泛的,比
- 前言在安装完python及pip,setuptools等工具后,即可以创建virualenv虚拟环境了,这个类似于虚拟机的工具,可以让同一台
- 偶第一次发主题, 这个是在一个项目中的做...写的一般般, 有什么bug之类的是在所难免, 望见谅功能说明:1. 即时控制用户输入2. 将输
- 背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6、7万封邮件,使用stat()和retr(whic
- 到现在为止,我们通过前面几篇博文的描述和分析,已经可以自动实现棋子、棋盘位置的准确判断,计算一下两个中心点之间的距离,并绘制在图形上,效果如
- 简称oop复习面向对象编程,简称oop [object oriented programming] 是一种python的编程思想面向过程:按
- 本文实例讲述了python简单实现基数排序算法。分享给大家供大家参考。具体实现方法如下:from random import randint