P2P文件上传
采用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文件上传的更多相关文章
- Slack 开源替代品 Rocket.Chat(聊天,文件上传等等)
Rocket.Chat 是特性最丰富的 Slack 开源替代品之一. 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等. Rocket.Chat ...
- 用c++开发基于tcp协议的文件上传功能
用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- 11、Struts2 的文件上传和下载
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
- Java FtpClient 实现文件上传服务
一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...
- 小兔Java教程 - 三分钟学会Java文件上传
今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...
- ,net core mvc 文件上传
工作用到文件上传的功能,在这个分享下 ~~ Controller: public class PictureController : Controller { private IHostingEnvi ...
- Web开发安全之文件上传安全
很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...
- AutoIt实现Webdriver自动化测试文件上传
在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...
随机推荐
- day 65 crm(2) admin源码解析,以及简单的仿造admin组件
前情提要: crm中的admin组件重写. 一:admin的autodiscover 作用:实现扫面该项目中的所有的admin 1:执行顺序-> 按照注册的顺序执行 二:单例模式 1:普通案例的 ...
- (原创)定时线程池中scheduleWithFixedDelay和scheduleAtFixedRate的区别
scheduleAtFixedRate 没有什么歧义,很容易理解,就是每隔多少时间,固定执行任务. scheduleWithFixedDelay 比较容易有歧义 貌似也是推迟一段时间执行任务,但Ora ...
- 适配 iOS 11 & iPhone X 大全
1.升级iOS11后造成的变化 1. 1升级后,发现某个拥有tableView的界面错乱,组间距和contentInset错乱,因为iOS11中UIViewController的automatical ...
- Linux CentOS7系统探索
这两天,突发奇想,想着用着微软家的windows系统很多年了,也想尝试一下其他的操作系统.很快的就想到了Linux操作系统,它不是面向用户的,而是面向服务器的,在服务器端的市场中占了很大的市场份额,备 ...
- WSGI学习系列WebOb
1. WSGI Server <-----> WSGI Middleware<-----> WSGI Application 1.1 WSGI Server wsgi ser ...
- seek()方法的使用
seek()方法用于移动文件读取指针到指定位置. file.seek()方法标准格式是:file.seek(offset,whence) offset:开始的偏移量,也就是代表需要移动偏移的字节数 w ...
- Vue.js系列之三模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- JDK1.10+scala环境的搭建之linux环境(centos6.9)
---恢复内容开始--- 第一步:安装jdk1.10版本 进入网页 http://oracle.com/technetwork/java/javase/downloads/index.html 下载 ...
- windows 64位 下 安装 tomcat
tomcat 版本 windows 64位 .zip apache-tomcat-7.0.42.zip 注意: 1. 安装目录不得有 空格 或 中文字符 2. 然后,在系统环境变量下,新建一个变量: ...
- 可调试Windows服务框架
参考: Build A Windows Service Framework 新建ServiceFramework类库,项目中需引用: using System.Configuration.Instal ...