刚刚上手的项目 被文件上传困扰了好久,之前用fileupload组件上传,代码参考孤傲苍狼博客,可是除了文件名,表单内的其他内容不知道该怎么读出来进行存储;所以此次采用smartupload组件进行上传

add.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'add.jsp' starting page</title></head><body><form action="backpages/memberIntroduce/addDo.jsp" method="post" enctype="multipart/form-data">姓名:<input type="text" name="name"><br>简介:<input type="text" name="content"><br>照片:<input type="file" name="photo"><br><input type="submit" value="提交"></form></body>
</html>

enctype必须是"multipart/form-data";

addDo.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.HQWeb.entity.*"%>
<%@ page import="com.HQWeb.dao.*"%>
<%@page import="com.jspsmart.upload.SmartUpload"%>
<%@page import="com.jspsmart.upload.File"%>
<%request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");//创建smartupload组件SmartUpload su = new SmartUpload();//初始化组件上下文su.initialize(pageContext);//上传文件su.upload();out.println("上传" + su.save("picture/memberPhoto") + "个文件成功!!!"+"<br>");//得到表单项//String name = su.getRequest().getParameter("name");//String content = su.getRequest().getParameter("content");String name = new String(su.getRequest().getParameter("name").trim().getBytes(), "utf-8");String content = new String(su.getRequest().getParameter("content").trim().getBytes(), "utf-8");//获取单个文件File file = su.getFiles().getFile(0);//可用一个for循环获取多个文件//判断当前file是否选择了文件;如果没有则继续if (file.isMissing())System.out.println("未选择文件");//如果用for循环 则continue//设置上传服务器的位置String path = "/picture/memberPhoto";//得到上传文件的名称String photo = file.getFileName();//上传文件的路径path = path + photo;//保存文件file.saveAs(path, SmartUpload.SAVE_VIRTUAL);System.out.println(photo);Member member = new Member();member.setName(name);member.setContent(content);member.setPhoto(photo);if (MemberDao.insert(member)) {out.println("操作成功,3秒后返回列表");response.setHeader("refresh", "3;list.jsp");} else {out.println("操作失败,3秒钟后返回列表");response.setHeader("refresh", "3;list.jsp");}
%>

在addDo.jsp页面里面,因为smartupload将全部内容封装,所以request.getParameter并不能获取到字段,需要使用封装好的su.getRequest().getParameter("name");

但又一个问题,上传中文表单时存储到数据库中会显示乱码,使用su.getRequest().getParameter("name").trim().getBytes(), "utf-8");能解决一部分,乱码问题尚待解决

重新自己总结上传文件流程:

1、实例化SmartUpload对象;

<!--[if !supportLists]-->2、 2、<!--[endif]-->初始化组建上下文(initialize(pageContext)方法);

<!--[if !supportLists]-->3、 3、<!--[endif]-->文件上传(upload()方法);

<!--[if !supportLists]-->4、 4、<!--[endif]-->获取表单项;

<!--[if !supportLists]-->5、 5、<!--[endif]-->获取文件(getFiles()返回Files类型,再使用其getFile(index)方法获取单个文件);

<!--[if !supportLists]-->6、 6、<!--[endif]-->设置服务器位置

<!--[if !supportLists]-->7、 7、<!--[endif]-->获取文件名

<!--[if !supportLists]-->8、 8、<!--[endif]-->设置路径;即path+filename path和文件名中间必须有"/"否则会将文件上传至pth路径下,并将文件名称改为该目录文件夹名+文件名

<!--[if !supportLists]-->9、 9、<!--[endif]-->使用file.saveAs(path, SmartUpload.SAVE_VIRTUAL);方法将文件保存至指定目录下

使用SmartUpload组件上传文件相关推荐

  1. 在jsp中使用smartupload组件上传文件- -

    在jsp中使用smartupload组件上传文件- - jsp对上传文件的支持不象php中支持的那么好,直接做成了函数,也不象asp中要通过组件才能实现.jsp中可以通过javabean来实现.但是我 ...

  2. 使用SmartUpload组件上传文件,自己踩过的坑

    昨天使用SmartUpload组件上传文件,代码很简单: smartupload_demo01.html <html> <head><title>smartuplo ...

  3. javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是<javaWeb中,如何通过Commons-FileUpload组件上传文件> 前言:文件上传大家都不陌生,在这个互联网飞速发展的时代,共享 ...

  4. element-ui upload组件 上传文件类型限制

    element-ui upload组件 上传文件类型限制 <el-uploadclass="c-upload"ref="upload":action=&q ...

  5. ant design Upload组件上传文件类型

    Upload组件上传文件类型设置 1.设置上传文件类型为excel <template><a-uploadname="file":multiple="t ...

  6. asp实现无组件上传文件原理

    一.上传网页     上传页面代码: <form   action="upload.asp"   method="post"   enctype=&quo ...

  7. 使用commons-fileupload组件上传文件(随笔)

    1.第三方控件又被称为是第三方组件,使用第三方组件,可以避免大量编码,减少开发工作量及由于逻辑或算法造成的程序异常,从而降低开发成本,提高开发效率.由于第三方组件是第三方组织或者个人提供的,在开发时提 ...

  8. elementui 上传七牛_element ui使用上传组件上传文件到七牛(qiniu-js)

    博主正在重构博客中,刚开始时静态资源都是上传到本地服务器的,但这个项目博主最后打算真正上线运营的.索性就改进了下,把静态资源尽量放到云存储中,方便后续开发.这里把方法和遇到坑给记录下. 1.使用前提注 ...

  9. smartupload工具上传文件

    目录 1.将jar包添加到项目中 2.准备上传的页面 3.后台代码: Servlet中获取JSP页面中的内置对象PageContext smartupload常用方法 文件下载 1.将jar包添加到项 ...

最新文章

  1. 利用 Python 打造一个语音合成系统
  2. 线性模型和非线性模型的区别
  3. C++读写EXCEL文件方式比较 .
  4. boost::regex模块部分正则表达式相关的测试程序
  5. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括
  6. JAVA SE知识点总结
  7. restTemplate设置访问超时
  8. complete_code_Chapter1
  9. 使用Photoshop分解gif
  10. 常见移动机器人多角度对比分析
  11. postgres 退出_Postgresl选择正确的关闭模式
  12. 情感预测SHINE: Signed Heterogeneous Information Network Embedding for Sentiment Link Prediction引介
  13. 基于Python/Socket实现小型的远程木马(包含实验)
  14. SHOI 2008 仙人掌图 BZOJ 1023
  15. PPT学习整理(五)编辑顶点
  16. java中整数的整数次方_数值的整数次方
  17. JavaWeb - 小米商城:商品添加到购物车
  18. 知识图谱从入门到应用——知识图谱推理:基于表示学习的知识图谱推理-[嵌入学习]
  19. 四六级重要单词(二)
  20. win10 ren命令+excel 给多个文件重命名同样的数字/汉字

热门文章

  1. 用php写一个美食页面,以美食为主题的网页设计案例10个
  2. [ctf.show.reverse] 吃鸡杯 ezmore,有手就行,EzAutoRe
  3. c语言编译面板上总有个0,C语言编程中常见问题.doc
  4. 【面试实战】Java面试的时候,你能这么回答,就基本都可以过了!
  5. 系统数据占用太多怎么清理 ios iphone
  6. linux解压zip文件命令
  7. 如来佛祖和玉皇大帝谁大!!唐僧为什么要取经《西游记》中的政治路
  8. vscode 全局搜索时屏蔽node_modules和dist 目录
  9. citidirect什么意思_citidirect.com
  10. 百度惊雷算法3.0即将上线(终于开始整治SEO快排行业了)