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 ...
随机推荐
- python相见恨晚的库
1)基本工具: virtualenv(虚拟环境)pip.setuptools (e.g. easy_install,这些东西肯定要呢)ipython(用了以后,就不再想用普通的python shell ...
- 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
@Data注解来源与Lombok,可以减少代码中大量的set get方法,大量减少冗余代码,但是今天部署项目时候,发现实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错. ...
- ubuntu sudo: pip:找不到命令
编辑文件 /etc/sudoers sudo vi /etc/sudoers 将Defaults env_reset ,改为 Defaults !env_reset 编辑文件-/.bashers ...
- Andrew Ng机器学习第五章——多变量线性回归
一.多变量线性回归的技巧之一——特征缩放 1.为什么要使用特征缩放? 特征缩放用来确保特征值在相似的范围之内. 设想这样一种情况(房价预测),两个特征值分别是房子的大小和卧室的数量.每个特征值所处的范 ...
- django框架--cookie/session
目录 一.http协议无状态问题 二.会话跟踪技术--cookie 1.对cookie的理解 2.cookie的使用接口 3.cookie的属性 4.使用cookie的问题 三.会话跟踪技术--ses ...
- Spring Security构建Rest服务-0701-个性化用户认证流程
上一篇说了用户认证的基本流程,但是上一篇当访问一个受保护的服务后,如果未认证会调到默认的登录页面,这样是不行的,而且认证成功后,就直接访问了那个服务,如果想要做认证成功后做一些操作,还需要自定义. 个 ...
- 【Java并发编程】:使用synchronized获取互斥锁
在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...
- php 按照二位数组中某个指定的字段进行排序
/** * 按照二维数组中某个指定的某个字段进行排序 * @param $array 需要被排序的数组 * @param $flag 排序的标志 1,SORT_DESC 降序 2,SORT_ASC 升 ...
- hibernate的配置文件,使用XML方式
<?xml version="1.0" encoding="UTF-8"?> <!-- 标准的XML文件的起始行,version='1.0'表 ...
- CentOS常用命令、快照、克隆大揭秘
不多说,直接上干货! cat是查看文件内容, cp –cp是连目录及件文件都拷贝 cp是拷贝文件 a.txt里的内容是, abc def ghi cat a.txt |grep –v gh ...