使用formdata的多文件上传  废话少说 直接上代码

1 JS部分

//选择文件后的处理
function handleFileSelect()
{
var exerciseid=$("#exerciseid").val();
var workerid=$("#workerid").val();
var pic_kind=$("#pic_kind").val();
//var pic_file = $('#pic_file')[0].files[0]; var formData = new FormData(); //formData.append("pic_file",$('#pic_file')[0].files[0]); var filesize=$('#pic_file')[].files.size; alert(filesize); for(var i=; i<$('#pic_file')[].files.length;i++){
alert($('#pic_file')[].files[i].size);
formData.append('file[]', $('#pic_file')[].files[i]);
} formData.append("pic_kind", pic_kind);
formData.append("exerciseid", exerciseid);
formData.append("workerid", workerid); $.ajax({
url: "{:U('Publishset/newUpload')}",
dataType:'json',
type:'POST',
data: formData,
processData : false, // 使数据不做处理
contentType : false, // 不要设置Content-Type请求头
xhr: function(){ //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ //检查upload属性是否存在
//绑定progress事件的回调函数
myXhr.upload.addEventListener('progress',aprogressHandlingFunction, false);
}
return myXhr; //xhr对象返回给jQuery使用
},
success: function(data){ $('#ap').val();
$('#aprogress').html(''); showExerciseImage(exerciseid);
//if (data) { // alert('上传成功!');
//} },
error:function(response){
console.log(response);
}
}); } //上传进度回调函数:
function aprogressHandlingFunction(e) {
if (e.lengthComputable) {
$('#ap').attr({value : e.loaded, max : e.total}); //更新数据到进度条
var percent = e.loaded/e.total*;
$('#aprogress').html(percent.toFixed() + "%");
}
}

2 html 部分

 <input class="file" id="pic_file" multiple type="file" onchange="handleFileSelect(event)" style="display:none;">

3 PHP部分

 public function newUpload()
{ //上传配置
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize= ;// 设置附件上传大小
$upload->exts=array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath='./uploads/inittestimg/'; // 设置附件上传根目录 $upload->savePath=''; // 设置附件上传(子)目录 //上传文件
$info=$upload->upload(); //参数获取
$exerciseid=$_POST["exerciseid"];
$kind=$_POST['pic_kind'];
$workerid=$_POST['workerid']; if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息 $images = M('initimages'); //循环入库
foreach($info as $file){
$imgarr['exerciseid']=$exerciseid;
$imgarr['src']='./uploads/inittestimg/'.$file['savepath'].$file['savename'];
$imgarr['kind']=$kind;
$imgarr['lastreadtime']=time(); //文件名
//$imgarr['orderid']=str_replace(strrchr($info['pic_file']['name'], "."),"",$info['pic_file']['name']);
$imgarr['orderid']=$file['name']; $images->add($imgarr);
} } echo ;
}

thinkphp3.2.3使用formdata的多文件上传的更多相关文章

  1. Java Web使用Html5 FormData实现多文件上传

    前一阵子,迭代一个线上的项目,其中有一个图片上传的功能,之前用的ajaxfileupload.js来实现上传的,不过由于ajaxfileupload.js,默认是单文件上传(虽然可以通过修改源码的方法 ...

  2. jQuery用FormData对象实现文件上传以及如何通过ajax下载文件

    之前在Vue的项目里面用到过文件上传,封装好的组件用起来比较顺手,查询Element-UI文档,十八般武器样样都有,一顿操作猛如虎,一看--跑偏了(⊙o⊙)-,我的意思就是用框架实现比较简单,但是如果 ...

  3. WebApi实现Ajax模拟Multipart/form-data方式多文件上传

    前端页面代码: <input type="file" class="file_control" /><br /> <input t ...

  4. multipart/form-data请求与文件上传

    要上传文件,需要用post方法,并且设置enctype为multipart/form-data. <form action="/upload" method="po ...

  5. multipart/form-data请求与文件上传的细节

    <!DOCTYPE html><html><head lang="en">  <meta charset="UTF-8" ...

  6. vue axios 与 FormData 结合 提交文件 上传文件

    ---再利用Vue.axios.FormData做上传文件时,遇到一个问题,后台虽然接收到请求,但是将文件类型识别成了字符串,所以,web端一直报500,结果是自己大意了. 1.因为使用了new  F ...

  7. tp5结合FormData实现ajax文件上传

    或者使用: 下面使用jquery.form.js的表单插件来提交表单

  8. FormData+Ajax 实现多文件上传 学习使用FormData对象

    FormData对象是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利. 今天我们使用dropzone和FormData实现多文件上传功能. var SAMP = null; / ...

  9. vue使用formData进行文件上传

    本文为博主原创,未经允许不得转载 1.vue页面 <ux-form ref="formRef" layout="vertical"> <ux- ...

随机推荐

  1. Android 自定义水平进度条的圆角进度

    有时项目中需要实现水平圆角进度,如下两种,其实很简单     下面开始看代码,先从主界面布局开始看起: <?xml version="1.0" encoding=" ...

  2. Django框架(十九)--Django rest_framework-认证组件

    一.什么是认证 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 二.利用token记录认证过的用户 1.什么是tok ...

  3. Delphi-面向对象

    1.面向过程2.基于对象3.面向对象 抽象:将同类事物向上抽取的过程 派生(继承): 编程中的继承指的是类和类之间的关系,称为派生. 封装:将不必要的暴漏的细节隐藏起来. 多态:一类事物以多种形态存在 ...

  4. 爬虫---Beautiful Soup 爬取图片

    上一篇简单的介绍Beautiful Soup 的基本用法,这一篇写下如何爬取网站上的图片,并保存下来 爬取图片 1.找到一个福利网站:http://www.xiaohuar.com/list-1-1. ...

  5. c# 第9节 数据类型之引用类型

    本节内容: 1:数据类型之引用类型 2:字符串要注意的两点: 1:数据类型之引用类型 实例: 2:字符串要注意的两点: 对变量进行重新赋值:其原本的字符串并没有销毁

  6. 201871010108-高文利《面向对象程序设计(java)》第十二周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  7. 获取 Docker 容器的 IP 地址

    docker inspect --format='{{.NetworkSettings.IPAddress}}' yourContainerIdOrContainerName

  8. LeetCode 654. Maximum Binary Tree最大二叉树 (C++)

    题目: Given an integer array with no duplicates. A maximum tree building on this array is defined as f ...

  9. 【oracle】11g服务器安装详细步骤

    以下是百度经验:https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 1.同时解压 2.setup 3.

  10. 11/4 <LinkedList>

    82. Remove Duplicates from Sorted List II 跳过重复节点,返回head. class Solution { public ListNode deleteDupl ...