Java实现上传文件图片到指定服务器目录

具体代码如下所示:

***web.xml***
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <servlet>
 <servlet-name>fileUpload</servlet-name>
 <servlet-class>cn.com.action.FileUpload</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>fileUpload</servlet-name>
 <url-pattern>/fileUpload</url-pattern>
 </servlet-mapping>
</web-app>
package cn.com.action;
import java.io.File;
import java.io.*;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
 *
 * @author Administrator
 * 文件上传
 * 具体步骤:
 * 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包
 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同
 * 3)对 DiskFileItemFactory 对象设置一些 属性
 * 4)高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory);
 * 目的是调用 parseRequest(request)方法 获得 FileItem 集合list ,
 *
 * 5)在 FileItem 对象中 获取信息, 遍历, 判断 表单提交过来的信息 是否是 普通文本信息 另做处理
 * 6)
 * 第一种. 用第三方 提供的 item.write( new File(path,filename) ); 直接写到磁盘上
 * 第二种. 手动处理
 *
 */
public class FileUpload extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 request.setCharacterEncoding("utf-8"); //设置编码
 //获得磁盘文件条目工厂
 DiskFileItemFactory factory = new DiskFileItemFactory();
 //获取文件需要上传到的路径
 String path = request.getRealPath("/upload1");
// String path = "c:/upload1";
 //如果没以下两行设置的话,上传大的 文件 会占用 很多内存,
 //设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同
 /**
  * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上,
  * 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的
  * 然后再将其真正写到 对应目录的硬盘上
  */
 factory.setRepository(new File(path));
 //设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室
 factory.setSizeThreshold(1024*1024) ;
 //高水平的API文件上传处理
 ServletFileUpload upload = new ServletFileUpload(factory);
 try {
  //可以上传多个文件
  List<FileItem> list = (List<FileItem>)upload.parseRequest(request);
  for(FileItem item : list){
  //获取表单的属性名字
  String name = item.getFieldName();
  //如果获取的 表单信息是普通的 文本 信息
  if(item.isFormField()){
   //获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的
   String value = item.getString() ;
   request.setAttribute(name, value);
  }else{//对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些
   /**
   * 以下三步,主要获取 上传文件的名字
   */
   //获取路径名
   String value = item.getName() ;
   //索引到最后一个反斜杠
   int start = value.lastIndexOf("\\");
   //截取 上传文件的 字符串名字,加1是 去掉反斜杠,
   String filename = value.substring(start+1);
   request.setAttribute(name, filename);
   //真正写到磁盘上
   //它抛出的异常 用exception 捕捉
   //item.write( new File(path,filename) );//第三方提供的
   //手动写的
   OutputStream out = new FileOutputStream(new File(path,filename));
   InputStream in = item.getInputStream() ;
   int length = 0 ;
   byte [] buf = new byte[1024] ;
   System.out.println("获取上传文件的总共的容量:"+item.getSize());
   // in.read(buf) 每次读到的数据存放在 buf 数组中
   while( (length = in.read(buf) ) != -1){
   //在 buf 数组中 取出数据 写到 (输出流)磁盘上
   out.write(buf, 0, length);
   }
   in.close();
   out.close();
  }
  }
 }catch (FileUploadException e) {
  e.printStackTrace();
 }catch (Exception e) {
  e.printStackTrace();
 }
 request.getRequestDispatcher("filedemo.jsp").forward(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 doGet(request, response);
 }
}
***index.jsp***
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传入口</title>
</head>
<body>
 <form action="fileUpload" enctype="multipart/form-data" method="post" >
     用户名称:<input type="text" name="usename"> <br/>
     上传图片:<input type="file" name="file1"><br/>
     上传文件:<input type="file" name="file2"><br/>
    <input type="submit" value="提交"/>
  </form>
</body>
</html>
***filedemo.jsp***
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>上传文件图片案列</title>
</head>
<body>
 用户名称:${requestScope.usename }<br />
 图片名称:${requestScope.file1 }<br />
 文件名称:${requestScope.file2 }<br />
 <!-- 把上传的图片显示出来 -->
 <img alt="go" src="upload1/<%=(String) request.getAttribute("file1")%> " />
</body>
</html>

总结

以上所述是小编给大家介绍的Java实现上传文件图片到指定服务器目录,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2018-06-11

Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

java基于servlet编写上传下载功能 类似文件服务器

本人闲来无事,写了个servlet,实现上传下载功能.启动服务后,可以在一个局域网内当一个小小的文件服务器. 一.准备工作 下载两个jar包: commons-fileupload-1.3.1.jar commons-io-2.2.jar 二.创建一个web工程 我的工程名叫:z-upload 三.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="ht

基于HTML5+js+Java实现单文件文件上传到服务器功能

上传单文件到服务器       应公司要求,在HTML5页面上实现上传文件到服务器,对于一个还没毕业的实习生菜鸟来说,这可不得了-----不会,网上各种百度,找各种博客还是没解决,最后还是请教了公司的大神,人家给卸了一个例子,然后根据人家写的终于把这个上传文件搞定. 好了,开始上代码. HTML5代码: <form name="upform" action="" method="POST"> <input type ="

java实现将文件上传到ftp服务器的方法

本文实例讲述了java实现将文件上传到ftp服务器的方法.分享给大家供大家参考,具体如下: 工具类: package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

JAVA技术实现上传下载文件到FTP服务器(完整)

具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

java实现上传文件到服务器和客户端

JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Exception { //建立服务端Socket ServerSocket ss = new ServerSocket(10005); //接收客户端Socket Socket fileLoaderSocket = ss.accept(); //打印连接信息 String ip = fileLoaderSo

Java通过FTP服务器上传下载文件的方法

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码. FavFTPUtil.Java package com.favccxx.favsoft.util; import jav

Java上传文件图片到服务器的方法

这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存,具体内容如下 首先是页面html的   我这是提交一个文件和类型 <div style="border: 1px solid red;"> 我是添加一张临时图片得到微信的media_id保存数据库! <form action="xxxxxxxxm" enctype="multipart/form-data" method="post">

Java上传文件进度条的实现方法(附demo源码下载)

本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以实现实时更新已上传文件的大小,有了这个还说什么呢? 这里给出代码: package lc.progress; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import lc.

Java上传文件到服务器端的方法

Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传.如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败. 上传文件要使用文件域(<input type='file'/>,并把FORM的Enctype设置为multipar

java web FTPClient实现上传文件到指定服务器

FPClient 实现上传文件到指定服务器,供大家参考,具体内容如下 调用 FileInputStream in=new FileInputStream(new File(fileUrl)); moveFile("10.3.3.**", 21, "username", "password", path, filename, in); 方法 /** * Description: 向FTP服务器上传文件 * @param url FTP服务器host

SpringBoot上传文件到本服务器 目录与jar包同级问题

前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了.当你使用File file = new File()的时候根本不知道这个路径怎么办.而且总不能很小的项目也给它构建一个文件服务器吧.所以这次就来解决这样的问题. 不想知道细节的,可以直接跳转到最后封装的部分,里面

Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上

Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上 今天同事想在windows上使用winscp上传文件到linux服务器上,又想偷懒想使用批处理来进行上传,还好只固定上传一个php文件,多了还真不好搞. 1.下载winscp 大家可以去网上自己找,我把winscp安装在c:下的 2.把要执行的命令保存到文件winscp.bat里,这个winscp.bat可以自己创建,我是放在d:下的. winscp.bat脚本内容: 复制代码 代码如下: option co

JS文件/图片从电脑里面拖拽到浏览器上传文件/图片

1.效果展示 2.html 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="./upload.js"></script> <style> #drop img{width: 100px;he

springboot以FTP方式上传文件到远程服务器

一.html代码   <div class="layui-form-item"> <label class="layui-form-label">上传附件:</label> <div class="layui-input-block doc-litpic"> <button type="button" name="avatar" class="

js获取上传文件的绝对路径实现方法

在html中 <input type="file" id="importFile" /> <input type="button" onclick="upload()"/> <script> function upload() { var filename = document.getElementById("importFile").value; // 这时的filen