目录

1.将jar包添加到项目中

2.准备上传的页面

3.后台代码:

Servlet中获取JSP页面中的内置对象PageContext

smartupload常用方法

文件下载


1.将jar包添加到项目中

  smartupload.jar
  javaee-api-7.0.jar

2.准备上传的页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><h1>上传图片和文本</h1><form action="uploadtest" method="post" enctype="multipart/form-data">姓名:<input type="text" name="uname"><br>图片:<input type="file" name="pic"><br><input type="submit" value="上传到服务器"></form></body>
</html>

注:(1)form标签中要添加enctype属性

(2)提交方式必须是post

3.后台代码:

package servlet;import com.jspsmart.upload.File;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
import java.io.IOException;@WebServlet(urlPatterns = "/uploadtest")
public class UploadServlet  extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {//1.创建上传文件的对象SmartUpload smartUpload = new SmartUpload();//2.初始化上传操作//在servlet中获取jsp的内置对象pageContext//通过工具类JspFactory.getDefaultFactory()的getPageContext()//getPageContext()中有7个参数//参1:当前servlet对象;参2:req;参3:resp;参4:字符串,传入jsp的错误页面;参5:是否使用session;参6:缓冲区大小;参7:缓冲区满了溢出部分是否加入到输出流中PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024, true);smartUpload.initialize(pageContext);//2.1 设置编码smartUpload.setCharset("utf-8");//3.文件上传到服务器smartUpload.upload();//4.获取文件信息File file = smartUpload.getFiles().getFile(0);//获取指定下标的上传文件String fileName = file.getFileName();//获取上传的文件名String contentType = file.getContentType();//获取上传文件的类型//获取文本信息String uname = smartUpload.getRequest().getParameter("uname");System.out.println("uname="+uname);//5.指定上传的路径(设置上传的文件在服务器中保存的位置)//首先在web下创建uploadfiles文件夹,并且创建文件a.txt,因为空文件夹无法部署到服务器String uploadpath="/uploadfiles/"+fileName;//6.保存到指定位置,File.SAVEAS_VIRTUAL表示保存到虚拟路径中file.saveAs(uploadpath,File.SAVEAS_VIRTUAL);//7.跳转成功页面,在页面中显示图片req.setAttribute("filename",fileName);req.getRequestDispatcher("success.jsp").forward(req,resp);} catch (SmartUploadException e) {e.printStackTrace();}}
}
(1)此时如果表单中有其他数据时,不能通过request直接获取,需要通过SmartUpload对象获取
smartUpload.getRequest().getParameter("uname")
并且该代码要在SmartUpload操作完成后添加
(2)解决乱码:
new String(name.getBytes("GBK"),"utf-8")

Servlet中获取JSP页面中的内置对象PageContext

JspFactory.getDefaultFactory().getPageContext(.........)

smartupload常用方法

文件下载

package servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;@WebServlet(urlPatterns = "/downimg")
public class DownServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String filename = req.getParameter("filename");//获取要下载的文件名String path="/uploadfiles/"+filename;//文件路径//设置响应的数据类型--将响应的内容设置为通用的二进制流resp.setContentType("application/octet-stream");//响应的头信息,设置文件名编码格式,避免页面中下载的文件名乱码//attachment 告诉浏览器以附件的方式下载文件(弹出下载框)resp.addHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"UTF-8"));//跳转页面req.getRequestDispatcher(path).forward(req,resp);//清空缓冲区:将服务端缓冲区的文件内容,立即全部传送给客户端resp.flushBuffer();}
}

本地图片上传到服务器后,并在页面显示图片

smartupload工具上传文件相关推荐

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

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

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

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

  3. putty怎么进入文件夹_如何利用putty工具上传文件 - 卡饭网

    图解使用FTP工具上传文件以FlashFXP为例 图解使用FTP工具上传文件以FlashFXP为例 现以FlashFXP为例,图解使用FTP工具上传文件. 1: 运行 LeapFTP,点击1处(站点- ...

  4. 使用SmartUpload组件上传文件

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

  5. 利用第三方工具上传文件

    准备jar包:commons-fileupload-1.2.2.jar commons-io-2.0.1.jar 在jsp页面form表单属性必须是:enctype="multipart/f ...

  6. 利用hfs工具上传文件的操作教程

    一.首先我用的hfs版本如下: 二.我们可以从hfs的帮助文档中找到关于上传文件的操作: 官方文件并不是step by step的上图红框的操作是要右键文件夹的,找到属性才可以的,如上图右. 三.用浏 ...

  7. 使用SSH工具上传文件

    1 下载一个SSH软件 xshell,finalshell都可以 本文以xshell为例 点击下载 安装好了界面是这样的 2 去阿里云控制台找到公网IP 点击这里 点击这里 复制公网IP 点击这里添加 ...

  8. android requestparams传入对象,Android xutils3上传文件使用示例

    Android xutils3工具上传文件非常方便,只需要传入File文件数据或一些其它参数给RequestParams对象即可完成,现在我们来开始使用xutils工具上传文件吧! 步骤一:需要在项目 ...

  9. 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云

    最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...

最新文章

  1. OpenNI框架介绍
  2. 【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )
  3. Vmware VPD要点
  4. 在pycharm中升级pip失败和pip安装pytorch torchvision opencv
  5. 前端学习(805):简单数据类型和复杂数据类型
  6. python爬虫---(2)爬虫基本流程
  7. 【Elasticsearch】腾讯Elasticsearch海量规模背后的内核优化剖析
  8. Linux下架设rsync服务器
  9. 序列化:protobuf原理
  10. 你要“老婆”不?谷歌程序员20行代码送你一个!
  11. mockito简单教程
  12. html使用iframe包含pdf文件,HTMLiframe用法总结收藏.pdf
  13. 生鲜电商纷纷传上市,但赛道并不性感
  14. 连接mysql超时_数据库连接超时的原因及其解决方法
  15. 找到数组里面缺失的数(C++(绝妙方法))
  16. Ubuntu发烧友三部曲 进阶篇
  17. Jmeter性能测试脚本实战
  18. Android 使用Service 实现的简易音乐播放器(有播放、暂停(继续)、重播、停止)
  19. Bean是如何创建的?
  20. python pip install一些第三方库的时候error

热门文章

  1. camtasiastudio最新版本2022喀秋莎标准版
  2. 中国不仅在液晶面板市场超越韩国,在先进面板技术上也发起了挑战
  3. 安装Fiddler证书到夜神模拟器系统证书中
  4. 用户与角色的区别与联系
  5. 查看pg 用户组_PostgreSQL 角色用户管理
  6. unity2D学习(10)创建敌人、为敌人编写简单的AI
  7. 认知MOS管-必懂MOS管11个基础知识点及分析
  8. Shell - mkdir
  9. 剑魂之刃登录显示服务器异常,剑魂之刃8月1日服务器维护 维护补偿公告
  10. python wifi模块