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 ...
随机推荐
- 编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...
- 【NOIP2018】保卫王国 动态dp
此题场上打了一个正确的$44pts$,接着看错题疯狂$rush$“正确”的$44pts$,后来没$rush$完没将之前的代码$copy$回去,直接变零分了..... 这一题我们显然有一种$O(nm)$ ...
- UiAutomator -- UiObject2 API
1.点击与长按 void click() Clicks on this object. void click(long duration) Performs a click on this objec ...
- Docker学习--Linux基础准备篇
1.docker命令不需要附带敲sudo的解决办法 由于docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户,所以其他用 ...
- 数据库MySQL(课下作业,必做)
数据库MySQL(课下作业,必做) 题目要求: 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入 ...
- postman—post方式几种请求参数区别
postman中 form-data.x-www-form-urlencoded.raw.binary的区别 版权声明参考: https://blog.csdn.net/wangjun5159/art ...
- 编写Android程序Eclipse连不上手机。
主要问题有: 1.开发者选项没有开启 2.设备管理器中MTP有黄色小叹号 3.ADB异常. 问题1容易解决. 问题2,3困扰了我很长时间,网上的很多解决方法是下载安装MTP驱动,或者直接右击更新驱动. ...
- Android Studio SVN的使用
一 SVN的配置 这篇文章使用的Android studio版本为1.4 RC3. 我选择的是TortoiseSVN,版本为1.8,不要选择1.9版本(目前的最新版),因为如果你安装的是1.9版本当你 ...
- Android 开发工具类 23_getImage
pathText = "http://192.168.1.100:8080/ServerForPicture/wangjialin.jpg" import java.io.Inpu ...
- 如何自学计算机科学与技术(Teach Yourself Computer Science)
如果你是一个自学成才的半吊子,或者是从培训班毕业的小菜鸟.那么,你欠自己一份计算机科学的专业知识.感谢上帝,如今你可以接受世界水平的计算机教育,但无需花费数年时间和一笔不小的金钱. 互联网上的学习资源 ...