上传文件的jsp中的部分

通过form表单向后端发送请求

<form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">

<div class="bbxx wrap">

<inputtype="text" id="side-profile-name" name="username" class="form-control">

<inputtype="file" id="example-file-input" name="avatar">

<button type="submit" class="btn btn-effect-ripple btn-primary">Save</button>

</div>

</form>

改进后的代码不需要form标签,直接由控件来实现。开发人员只需要关注业务逻辑即可。JS中已经帮我们封闭好了

通过监控工具可以看到控件提交的数据,非常的清晰,调试也非常的简单。

2.通过ajax向后端发送请求

1.

$.ajax({

url : "${pageContext.request.contextPath}/UploadServlet",

type : "POST",

data : $( '#postForm').serialize(),

success : function(data) {

$( '#serverResponse').html(data);

},

error : function(data) {

$( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);

}

});

ajax分为两部分,一部分是初始化,文件在上传前通过AJAX请求通知服务端进行初始化操作

在文件上传完后向服务器发送通知

这里需要处理一个MD5秒传的逻辑,当服务器存在相同文件时,不需要用户再上传,而是直接通知用户秒传

这里可以看到秒传的逻辑是非常 简单的,并不是特别的复杂。

var form = new FormData();

form.append("username","zxj");

form.append("avatar",file);

//var form = new FormData($("#postForm")[0]);

$.ajax({

url:"${pageContext.request.contextPath}/UploadServlet",

type:"post",

data:form,

processData:false,

contentType:false,

success:function(data){

console.log(data);

}

});

java部分

文件初始化的逻辑

接收文件块数据,在这个逻辑中我们接收文件块数据。控件对数据进行了优化,可以方便调试。如果用监控工具可以看到控件提交的数据。

注:

1. 上面的java部分的代码可以直接使用,只需要将上传的图片路径及收集数据并将数据写入到数据库即可

2. 上面上传文件使用到了字节流,其实还可以使用别的流,这个需要读者自己在下面完善测试

3. BeanUtils是一个工具 便于将实体对应的属性赋给实体

4. 上传文件不能使用 request.getParameter("")获取参数了,而是直接将request解析,通过判断每一项是文件还是非文件,然后进行相应的操作(文件的话就是用流来读取,非文件的话,暂时保存到一个map中。)

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7%82%B9%E7%BB%AD%E4%BC%A0%E4%B8%8A%E4%BC%A0/

最新文章

  1. PHP面向对象笔记
  2. 微信支付之JSAPI开发第一篇-基本概念
  3. Android Frameworks层介绍
  4. PLSQL Developer注册码
  5. Linux shell misc
  6. Linux - 非阻塞socket编程处理EAGAIN错误
  7. jq 选择器
  8. 【JavaScript】常用的JS
  9. Effective Java:Ch4_Class:Item13_最小化类及其成员的可访问性
  10. windows phone 页面传值(7)
  11. [maven(1)]myeclipse2014下如何配置maven
  12. SpringBoot应用的集成测试
  13. 改进版getpass库
  14. GitHub 系列之「团队合作利器 Branch」
  15. CentOS7虚拟机克隆,且成功互ping
  16. Win10在右键菜单添加在此处打开命令窗口项
  17. Eclipse配置MyBatis的xml自动提示【转】
  18. Python开发【笔记】:PEP 8 编码规范
  19. php 的Boolean类型
  20. Bitlocker驱动器加密使用

热门文章

  1. mysql——触发器——前期整理笔记00
  2. switch-case分支结构总结
  3. linux-yum-downloadonly 下载rpm安装包到本地
  4. 洛谷 P1801 黑匣子 题解
  5. springboot2.0国际化
  6. 模板 - Prim
  7. C语言数据类型关键字
  8. npm学习(四)之如何安装全局包、更新全局安装的包、卸载全局安装的包
  9. Go基础学习
  10. JS预解释