采用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. C# 证书打印《六》

    整理思路,从新出发. 加载模版 public void loadtemplate(Label lable) { string p_tempateFile = @"fomate.xml&quo ...

  2. Django的常用方法以及配置

    在setting 中配置能生成  sql log 的内容 LOGGING = { , 'disable_existing_loggers': False, 'handlers': { 'console ...

  3. editplus配置csharp

    只要是写代码的,我们肯定常有用到EditPlus..Net开发也是如此.有时我们需要调试一小段C#(或VB.Net)代码,这时去大动干戈在臃肿的VS.Net中新建“控制台应用程序”项目,写满“Cons ...

  4. Scala 中的foreach和map方法比较

    Scala中的集合对象都有foreach和map两个方法.两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法.而两者的差异在于:foreach无返回值(准确说返回void),map返 ...

  5. (转)CentOS7下yum安装mysql配置多实例

    原文:http://blog.csdn.net/poklau/article/details/54951798

  6. [转]Subdirectory Checkouts with git sparse-checkout

    From:http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/ If there is one thi ...

  7. 关于注解Annotation第二篇

    写一个注解使用类,如下: public class Test { @Code(author = "mazhi",date="20170611") private ...

  8. ztree树的递归

    function clickAssignBtn(){ $('#assignBtn').off('click').on('click',function(){ var checkFlag=getRole ...

  9. C/C++练习题(三)

    1.对下面两个文件编译后,运行会输出什么? // 第一个文件a.c #include <stdio.h> extern char p[]; extern void f(); int mai ...

  10. 自然语言处理--Word2vec(一)

    一.自然语言处理与深度学习 自然语言处理应用 深度学习模型                       为什么需要用深度学习来处理呢 二.语言模型 1.语言模型实例: 机器翻译 拼写纠错        ...