转载至:http://www.xdx97.com/#/single?bid=8b351a73-922c-eadc-512e-9e248a3efde9

前端通过form表单用post方式提交文件,后台进行保存处理。此处省略较多注释及其他功能,仅保留上传文件功能,建议阅读原文学习。

前端:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="content-type" content="text/html; charset=UTF-8">
  5. <title>发布商品</title>
  6. </head>
  7. <body>
  8. <form action="../com/yh/myServlet/AddGoodsServlet"
  9. enctype="multipart/form-data" method="post">
  10. 上传文件:<input type="file" name="picture"> <br/>
  11. <input type="submit" value="提交">
  12. </form>
  13. </body>
  14. </html>

后端:

  1. package com.yh.myServlet;
  2.  
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.List;
  8. import java.util.UUID;
  9.  
  10. import javax.servlet.ServletException;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. import org.apache.commons.fileupload.FileItem;
  16. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  17. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  18.  
  19. public class AddGoodsServlet extends HttpServlet {
  20.  
  21. /**
  22. *
  23. */
  24. private static final long serialVersionUID = 1L;
  25.  
  26. @Override
  27. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  28. throws ServletException, IOException {
  29. // TODO Auto-generated method stub
  30. }
  31.  
  32. @Override
  33. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  34. throws ServletException, IOException {
  35. // TODO Auto-generated method stub
  36. response.setContentType("text/html;charset=utf-8");
  37.  
  38. String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
  39. savePath = savePath.replace("\\", "\\\\");
  40. File file = new File(savePath);
  41. if (!file.exists()) {
  42. file.mkdir();
  43. }
  44. InputStream in = null;
  45. FileOutputStream out = null;
  46. try {
  47. DiskFileItemFactory factory = new DiskFileItemFactory();
  48. ServletFileUpload upload = new ServletFileUpload(factory);
  49. upload.setHeaderEncoding("UTF-8");
  50.  
  51. List<FileItem> list = upload.parseRequest(request);
  52. for (FileItem item : list) {
  53. String filename = item.getName();
  54. if (filename == null || filename.trim().equals("")) {
  55. continue;
  56. }
  57. filename = filename.substring(filename.lastIndexOf(".") + 1);
  58. filename = UUID.randomUUID().toString() + "." + filename;
  59. out = new FileOutputStream(savePath + "\\\\" + filename);
  60. byte[] buffer = new byte[1024];
  61. int len = 0;
  62. in = item.getInputStream();
  63. while ((len = in.read(buffer)) > 0) {
  64. out.write(buffer, 0, len);
  65. }
  66. item.delete();
  67. }
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. } finally {
  71. in.close();
  72. out.close();
  73. }
  74. }
  75. }

java上传图片或文件的更多相关文章

  1. java上传图片或者文件

    package com.pat.postrequestemulator; import java.io.BufferedReader; import java.io.DataInputStream; ...

  2. java上传图片到数据库,涉及压缩文件zip/rar上传等

    项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...

  3. ajax 提交所有表单内容及上传图片(文件),以及单独上传某个图片(文件)

    我以演示上传图片为例子: java代码如下(前端童鞋可以直接跳过看下面的html及js): package com.vatuu.web.action; import java.io.File; imp ...

  4. JSP+java上传图片到服务器,并将地址保存至MYSQL + JSP网页显示服务器的图片

    这两天遇到个需求——用户头像修改功能. 查了好多资料,不是代码不全,就是某些高端框架,卡了好久,今已实现,分享给大家,如果有更好的方法,非常感谢可以在下方评论区写出 一.整体项目架构 二.web.xm ...

  5. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

  6. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  7. java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. java 上传图片

    1.导入smartupload.jar包 ,添加uploadIMG.jsp,upfileIMG.jsp. 2.需要在项目下面建立一个保存文件的文件夹pic或者upload 3.在调用的地方调用子框架u ...

  9. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

随机推荐

  1. HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter

    前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html:今天我们 ...

  2. JDK 之 Arrays.asList - 源码分析

    Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: @SafeVarargs public static <T> Lis ...

  3. 博主日常工作中使用的shell脚本分享

    前言: 今天给大家分享一篇在我工作中常用的一个shell脚本,里面有一些我们常用到的shell操作.该脚本用于本地电脑和服务器交互上,实现以下功能: 自动拉取自己个人电脑上的源码到服务器上yocto包 ...

  4. vi/vim 常用命令总结

    目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...

  5. Maven 源码解析:依赖调解是如何实现的?

    系列文章目录(请务必按照顺序阅读): Maven 依赖调解源码解析(一):开篇 Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码 Maven 依赖调解源码解析(三):传递依赖, ...

  6. [bzoj5462]新家

    先离线,将询问按照时间排序,维护商店出现和消失 对于每一个询问,先二分枚举答案,假设是ans, 即要求对于区间[l-ans,l+ans],商店的种类数是k(l是询问的位置) (当然需要先将所有位置离散 ...

  7. Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析

    前言   前面进行了可以传输,那么写一个简单的C程序来交叉编译并传入运行.   虚拟机   上一篇搭建的虚拟机环境,包含了sftp传递文件,网络能ping通,基于上一篇的虚拟机继续搭建.   海思交叉 ...

  8. BehaviorTree.CPP行为树BT的队列节点(三)

    Sequences(队列) 只要序列的所有子代返回SUCCESS,它便会对其进行Tick. 如果有任何子级返回FAILURE,则序列中止. 当前,该框架提供三种节点: Sequence Sequenc ...

  9. Codeforces 891E - Lust(生成函数)

    Codeforces 题面传送门 & 洛谷题面传送门 NaCly_Fish:<简单>的生成函数题 然鹅我连第一步都没 observe 出来 首先注意到如果我们按题意模拟那肯定是不方 ...

  10. python 新闻管理系统——启示

    mysql取整函数: mysql函数ceil.floor.round mysql 取整 1.ceil() / ceiling() 向上取整 ex: ceil(1.2) = 2 2.floor() 向下 ...