【萌新的Java Web开发学习笔记】第七章 文件上传(小案例)

el/2023/6/3 15:45:07

使用smartupload.jar实现文件上传

1.将jar包添加到项目中:smartupload.jar
2.准备上传的页面

<form action="toUpload" method="post" enctype="multipart/form-data" >
书名:<input type="text" name="bookName"/><br>
图片:<input type="file" name="自定义名称"/><br>
<input type="submit" value="提交"/>
</form>

注:(1)form标签中要添加enctype属性
(2)提交方式必须是post
3.开始获取数据,保存文件
实例代码:

public void upload(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//上传文件
SmartUpload su=new SmartUpload();
//获得pageContext对象
JspFactory factory=JspFactory.getDefaultFactory();
PageContext pagecontext=
factory.
getPageContext(this, request,response,
null,false,1024,true);
su.initialize(pagecontext);
su.setCharset("utf-8");
//实现文件数据的上传
su.upload();
File file = su.getFiles().getFile(0);
//得到文件的基本信息
String filename=file.getFileName();
String type=file.getContentType();
System.out.println("type="+type);
String url="uploadfile/"+filename;
//将上传文件保存到指定目录
file.saveAs(url, SmartUpload.SAVE_VIRTUAL);
request.setAttribute("filename",filename);
String uname=su.getRequest().getParameter("uname");
System.out.println("uname="+uname);
request.getRequestDispatcher("success.jsp").forward(request, response);
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

注:(1)此时如果表单中有其他数据时,不能通过request直接获取,需要通过SmartUpload对象获取
String name=su.getRequest().getParameter("bookName");
并且该代码要在SmartUpload操作完成后添加
(2)解决乱码:
new String(name.getBytes("GBK"),"utf-8")
注:斜杠方向:/
注意:

smartupload常用方法:

 

 

http://www.ngui.cc/el/1461181.html

相关文章

动态规划的背包问题,看完这篇博客,你再不会就来打我——背包九讲详细学习笔记(目前已更新完0/1背包,完全背包部分一周内更新)

前言&#xff1a; 《背包九讲》的作者为崔添翼&#xff08;dd_engi&#xff09;&#xff0c;原文链接不知道在哪里……这篇文章记录了我自己阅读大佬文章时不理解的地方是如何去思考的。并且给初学者提供了学习参考。 1、0/1背包 最直观的输出过程理解&#xff1a; 不理解不…

[数据库萌新入门] 第二章 SQL语句练习的学习笔记

50道SQL练习题 1、数据表介绍&#xff1a; 2、感想&#xff1a; 1、MySQL里面的 sql 语句的 not in 。举例如下&#xff1a; 对多列用的话要 (列1&#xff0c;列2) in/(not in) (子查询也必须是(列1&#xff0c;列2)) 这样写是对的&#xff1a; SELECT * FROM sc WHERE si…

[数据库萌新入门] 第三章 数据库简单面试题和事务考点详解(脏读、不可重复读、幻读)

一些简单的面试题&#xff1a; 说一下你熟悉的数据库,这个数据库有什么特点? mysql关系型数据库开源中最常用的数据库,有多种表引擎,支持事务,支持表关系redis非关系型数据库键值对的存储方式,并且数据存储在内存中,有多种不同的数据类型mongodb非关系型数据库,基于分布式文件…

[数据库萌新入门] 第四章 存储过程、触发器、视图

一、MySQL存储过程(了解即可) 什么是存储过程&#xff1f; 目前使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。 例如以下的情形。 为了处理订单,需要核对以保证库存中有相应的物品。 如果…

[数据库萌新入门] 第五章 索引与SQL优化

一、索引 什么是索引&#xff1f; MySQL&#xff1a;官方定义索引(Index)是帮助MySQL高效获取数据的数据结构。 我们可以简单理解为:快速查找排好序的一种数据结构。 索引分类&#xff1a; • 主键索引 • 唯一索引 • 普通索引 • 全文索引 • 组合索引 &#xff08;查询…

毕设学习过程 —— Spring基础入门(1)

注&#xff1a;此篇会很散乱&#xff0c;事后随手记给自己看的 8、注解开发 要用spring注解开发的话&#xff0c;若只加载了core等spring核心组件&#xff0c;则要在 beans 中添入一些 schema &#xff0c;如下图 <context:component-scan base-package"包路径"…

毕设学习过程 —— Spring基础入门(2)Spring和JDBC

JDBC入门&#xff1a; 1、JDBC基本代码&#xff1a; public void test() {// 1、创建连接池// 2、创建jdbc模板// 3、执行sql} public void test(){//创建连接池DriverManagerDataSource dataSource new DriverManagerDataSource();dataSource.setDriverClassName("com.…

定时任务调度工具之Quartz(一) 转载

原创出处&#xff1a;癫狂编程 一、Quartz介绍 OpenSymphony提供的强大的开源任务调度框架&#xff1b;官网&#xff1a;http://www.quartz-scheduler.org/纯Java实现&#xff0c;精细控制排程&#xff1b; 1.特点 (1)强大的调度功能&#xff1a;作为spring默认的调度框架&a…

Kafka新手入门-001 官网的 QuickStart 踩坑拾遗

跟着卡夫卡官网走 QuickStart 教程&#xff0c;遇到了不少问题&#xff0c;现记录如下&#xff1a; 第一步 第一步没有问题。 第二步 这里第一次可以成功&#xff0c;如果关掉虚拟机重开后&#xff0c;重试这一步会报错&#xff0c;报错信息如下&#xff1a; [2020-01-11 11:…

Kafka新手入门-000 QuickStart 里面介绍视频的字幕整理

Kafka官网的QuickStart ------ 这里面有视频 Hi, I’m Tim Berglund with Confluent. I’ d like to tell you what Apache Kafka is. But first, I wanna start with some background. For a long time now, we have written programs that store information in databases. …