采用uploadify上传  官网:http://www.uploadify.com/  (有H5版本和flash版本,H5收费,所以暂时用flash)

uploadify的重要配置属性(http://www.uploadify.com/documentation/):

1.auto:是否选择之后立刻上传

2.buttonText:按钮的文字

3.fileObjName:服务器端获取上传文件name的属性

4.fileTypeDesc:文件类型显示提示描述

5.fileTypeExits:控制文件类型

6.formData:在上传过程中,额外的参数和值

7.height:按钮高度

8.multi:是否允许多选(默认为true)

9.overrideEvents:要覆盖的事件

10.swf:指向uploadify的flash文件

11:uploader:后台处理上传文件的地址

12:width:按钮的宽度

==================================

<script type="text/javascript">
$(function(){ //把上传身份证正面的a标签变成一个uploadify的组件
$("#uploadBtn1").uploadify({
buttonText:"身份证正面",
fileObjName:"file",
fileTypeDesc:"身份证正面图片",
fileTypeExts:"*.gif; *.jpg; *.png",
multi:false,
swf:"/js/plugins/uploadify/uploadify.swf",
uploader:"/realAuthUpload.do",
overrideEvents:["onUploadSuccess","onSelect"],
onUploadSuccess:function(file,data){
$("#uploadImg1").attr("src",data);
$("#uploadImage1").val(data);
}
}); $("#uploadBtn2").uploadify({
buttonText:"身份证反面",
fileObjName:"file",
fileTypeDesc:"身份证反面图片",
fileTypeExts:"*.gif; *.jpg; *.png",
multi:false,
swf:"/js/plugins/uploadify/uploadify.swf",
uploader:"/realAuthUpload.do",
overrideEvents:["onUploadSuccess","onSelect"],
onUploadSuccess:function(file,data){
$("#uploadImg2").attr("src",data);
$("#uploadImage2").val(data);
}
});
});
</script>
                    <div class="form-group">
<label class="col-sm-4 control-label" for="address">身份证照片</label>
<div class="col-sm-8">
<p class="text-help text-primary">请点击“选择图片”,选择证件的正反两面照片。</p>
<a href="javascript:;" id="viewExample">查看样板</a>
<div class="idCardItem">
<div>
<a href="javascript:;" id="uploadBtn1" >上传正面</a>
</div>
<img alt="" src="" class="uploadImg" id="uploadImg1" />
<input type="hidden" name="image1" id="uploadImage1" />
</div>
<div class="idCardItem">
<div>
<a href="javascript:;" id="uploadBtn2" >上传反面</a>
</div>
<img alt="" src="" class="uploadImg" id="uploadImg2"/>
<input type="hidden" name="image2" id="uploadImage2" />
</div>
<div class="clearfix"></div>
</div>
</div>

=================================================================

前台controller

1.需要导入fileupload的包

            <!--fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

2.在springMvc中加入multipartResolver

 <!--文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000000"></property>
</bean>
package com.xmg.p2p.base.controller;

import javax.servlet.ServletContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile; import com.xmg.p2p.base.domain.Userinfo;
import com.xmg.p2p.base.service.IRealAuthService;
import com.xmg.p2p.base.service.IUserinfoService;
import com.xmg.p2p.base.util.RequireLogin;
import com.xmg.p2p.base.util.UploadUtil; /**
* 实名认证控制
* @author Administrator
*
*/
@Controller
public class RealAuthController { @Autowired
private ServletContext servletContext;

    /**
    * 文件上传
    */
  @RequestMapping("realAuthUpload")
  @ResponseBody
  public String realAuthUpload(MultipartFile file){
    //先得到basepath文件的绝对路径
    String basePath = servletContext.getRealPath("/upload");//会上传到webapp下的upload文件夹
    String filename = UploadUtil.upload(file, basePath);
    //System.out.println("/upload/"+filename);
    return "/upload/"+filename;

    }

}

工具类

package com.xmg.p2p.base.util;

import java.io.File;
import java.io.IOException;
import java.util.UUID; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile; /**
* 上传工具
*
* @author Administrator
*
*/
public class UploadUtil { /**
* 处理文件上传
*
* @param file
* @param basePath
* 存放文件的目录的绝对路径 servletContext.getRealPath("/upload")
* @return
*/
public static String upload(MultipartFile file, String basePath) {
String orgFileName = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + "."
+ FilenameUtils.getExtension(orgFileName);
try {
File targetFile = new File(basePath, fileName);
FileUtils.writeByteArrayToFile(targetFile, file.getBytes()); } catch (IOException e) {
e.printStackTrace();
}
return fileName;
}
}

============================================================

P2P文件上传的更多相关文章

  1. Slack 开源替代品 Rocket.Chat(聊天,文件上传等等)

    Rocket.Chat 是特性最丰富的 Slack 开源替代品之一. 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等. Rocket.Chat ...

  2. 用c++开发基于tcp协议的文件上传功能

    用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...

  3. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

  4. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  5. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

  6. 小兔Java教程 - 三分钟学会Java文件上传

    今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...

  7. ,net core mvc 文件上传

    工作用到文件上传的功能,在这个分享下 ~~ Controller: public class PictureController : Controller { private IHostingEnvi ...

  8. Web开发安全之文件上传安全

    很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...

  9. AutoIt实现Webdriver自动化测试文件上传

    在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...

随机推荐

  1. pythonweb框架Flask学习笔记01-ubuntu18.04下安装Flask

    Flask 依赖两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集 由于各个项目工程之间可能存在python库版本的差异 为了防止库版本差异对项目开发产生的影响,使用virtu ...

  2. 【codeforces 623E】dp+FFT+快速幂

    题目大意:用$[1,2^k-1]$之间的证书构造一个长度为$n$的序列$a_i$,令$b_i=a_1\ or\ a_2\ or\ ...\ or a_i$,问使得b序列严格递增的方案数,答案对$10^ ...

  3. 【poj3252】 Round Numbers (数位DP+记忆化DFS)

    题目大意:给你一个区间$[l,r]$,求在该区间内有多少整数在二进制下$0$的数量$≥1$的数量.数据范围$1≤l,r≤2*10^{9}$. 第一次用记忆化dfs写数位dp,感觉神清气爽~(原谅我这个 ...

  4. linux 手动释放buff/cache

    为了解决buff/cache占用过多的问题执行以下命令即可 syncecho 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_ ...

  5. Hadoop简介与伪分布式搭建—DAY01

    一.  Hadoop的一些相关概念及思想 1.hadoop的核心组成: (1)hdfs分布式文件系统 (2)mapreduce 分布式批处理运算框架 (3)yarn 分布式资源调度系统 2.hadoo ...

  6. Vue.js系列之三模板语法

    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...

  7. oracle_jdbc_insert_into

    package com.ayang.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S ...

  8. 在webpack中配置vue.js

    在webpack中配置vue.js 这里有两种在webpack中配置vue.js的方法,如下: 1.在main.js中引入vue的包: index.html: <!DOCTYPE html> ...

  9. Hadoop/Spark生态圈里的新气象

    令人惊讶的是,Hadoop在短短一年的时间里被重新定义.让我们看看这个火爆生态圈的所有主要部分,以及它们各自具有的意义. 对于Hadoop你需要了解的最重要的事情就是 ,它不再是原来的Hadoop. ...

  10. Java封装Redis常用操作

    package com.advance.Redis; import org.apache.log4j.Logger; import org.testng.annotations.Test; impor ...