<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

</head>

<body>
<%=path %>
<form enctype="multipart/form-data" action="<%=path %>/test.jsp" method="post">
             姓 名: <input name="username"/>
选择文件:<input type="file" name="myfile" />
<input type="submit" value="上传"/>
</form>
</body>
</html

<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>

<%
request.setCharacterEncoding("UTF-8");
               //将用户传递过来的request中的内容解析出来,判定其类型,如果是常规的普通表单字段,执行处理方式一
              //否则就代表的是文件域,那么执行处理方式二
             //01.判定是普通表单,还是用来上传文件的表单
boolean flag= ServletFileUpload.isMultipartContent(request);
if(flag){
            //开始找到一个解析器,来解析请求中的各个项目
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);//解析器upload创建成功
List<FileItem> fileList=upload.parseRequest(request);
           //每一个FileItem都代表一个表单元素
Iterator<FileItem> myitor=fileList.iterator();
while(myitor.hasNext()){
FileItem item=myitor.next();
if(item!=null){
          //对当前item进行验证,看它是普通表单还是上传用的文件域
if(item.isFormField()){//证明是普通的表单字段
//获取该表单元素的内容(value值)
String name=item.getFieldName();//这是表单元素的name属性,而不是value值
if(name.equals("username")){
out.print(item.getString("UTF-8"));
}
}else{     //是一个文件域
String fileName=item.getName();//ef.doc
          //扔到服务器的目录下
String path="/WEB-INF/upload";                 //文件上传不能用相对路径
          //将相对路径转换成绝对路径
String abosolutePath=this.getServletContext().getRealPath(path);
File file=new File(fileName);
File uploadFile=new File(abosolutePath,file.getName());
item.write(uploadFile);
out.print("上传成功");
             }
          }
      }
   }
%>

<%--<%
            //控制文件上传的类型
FileItem item=(FileItem) myitor.next();
if(!item.isFormField()){          //是否是文件的表单字段
String fileName =item.getName();
           //通过Arrays类的asList()方法创建固定的长度集合
List<String> fileType=Arrays.asList("gif","bmp","jpg");
String ext=fileName.substring(fileName.lastIndexOf(".")+1);
if(!fileType.contains(ext)){     //判断文件类型是否在允许范围内
out.print("文件上传失败,文件类型只能是gif,bmp,jpg类型");
}else{
if(fileName!=null&& !fileName.equals("")){
File fullFile=new File(item.getName());
File saveFile=new File(abosolutePath,fullFile.getName());
item.write(saveFile);
uploadFileName=fullFile.getName();
out.print("上传成功后的文件名是:"+uploadFileName);
     }
 }

}
%>--%>

 真希望你笑的时候,旁边坐着的是一个能和你一起笑的人。
合适的圈子,会接纳你所有的好事却不生嫉妒。
在真正的朋友面前,她从不会认为你显摆,只会由衷的为你高兴。
总有些人看不得你好。
但你却从此看清了哪些是真正的朋友,哪些只是过客。
生活无需过多陪衬,三观不和的朋友多了,越热闹越冷清。 

JSP文件上传,好烦啊、、的更多相关文章

  1. 不用外部JAR包,自己实现JSP文件上传!

    看书上(JSP应用与开发技术)使用JSP文件上传,写了个真无语,压根就有很多问题,上传500KB的文件传过去后只剩350KB,而且编码必须是GBK.GB2312,否则传过去的文件都数据截取不正确. 琢 ...

  2. jsp文件上传

    整理了一下jsp的上传下载,由客户端到服务端,包括一些常规的业务 一客户端 先看最基本的情况 1 在表单设置multipart/form-data,通过提交键把数据和附件一次性提交的.服务器更多的是对 ...

  3. JSP 文件上传下载系列之二[Commons fileUpload]

    前言 关于JSP 文件上传的基础和原理在系列一中有介绍到. 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发. 官方的介绍是:  让添加强壮,高性能的文件到你的se ...

  4. JSP 文件上传

    JSP 文件上传 JSP可以通过HTML的form表单上传文件到服务器. 文件类型可以是文本文件.二进制文件.图像文件等其他任何文档. 创建文件上传表单 接下来我们使用HTML标签来创建文件上传表单, ...

  5. JSP-Runoob:JSP 文件上传

    ylbtech-JSP-Runoob:JSP 文件上传 1.返回顶部 1. JSP 文件上传 JSP 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图 ...

  6. jsp文件上传、下载

    一.文件上传 上传文件是Web开发中经常要用到的功能:例如在基于B/S的人事信息管理系统中上传照片,在新闻发布系统中上传图片等等.....要实现文件上传功能,就需要综合利用java中的文件输入和输出相 ...

  7. JSP文件上传--Smartupload组件

    把smartupload.jar copy到D:\apache-tomcat-7.0.57\lib下. 创建htm上传文件:smartupload_demo01.htm 由于是上传文件,需要对表单进行 ...

  8. jsp 文件上传操作

    文件上传 1:完成一个文件上传的功能 index.jsp 注意更换form表单的enctype enctype就是encodetype就是编码类型的意思. multipart/form-data是指表 ...

  9. jsp文件上传下载组件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

随机推荐

  1. Notepad++安装xml插件

    环境: win7 64位 Notepad++7.3.3 原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安 ...

  2. 让应用程序支持emoji字符

    自iPhone从iOS 5在输入法中开始支持emoji以来,这些表情符号迅速风靡世界.但是很多Web网站竟然还不!支!持!!! 那怎么才能支持emoji呢?其实代码一行都不用改,因为emoji符号实际 ...

  3. bzoj2117

    动态电分治+二分 肯定要枚举所有点对,那么我们建出点分树降低树高,然后每个点存下点分树中所有子树到这个点的距离,然后二分+lower_bound就行了. #include<bits/stdc++ ...

  4. Python深入浅出property特性属性

    导语 在Java中,通常在类中定义的成员变量为私有变量,在类的实例中不能直接通过对象.属性直接操作,而是要通过getter和setter来操作私有变量. 而在Python中,因为有property这个 ...

  5. 3-2if条件结构

    不同条件做不同的操作.例如满100就减去20 条件结构 package com.imooc.operator; public class ConditionDemo1 { public static ...

  6. 爬虫代码实现六-Queue队列实现循环抓取

    StartDSJCount : package com.dajiangtai.djt_spider.start; import java.util.List;import java.util.Queu ...

  7. java多线程知识点收集-总

    1.线程与进程的关系 进程(Process):当一个程序进入内存开始运行时,就产生一个进程.进程是一个独立单元,它的资源由系统分配和调度. 线程(Thread):线程是进程的执行单元,线程在进程中是独 ...

  8. 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

    ==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ...

  9. 萌新笔记之堆(heap)

    前言(萌新感想): 以前用STL的queue啊stack啊priority_queue啊,一直很想懂原理,现在终于课上到了priority_queue,还有就是下周期中考,哈哈,所以写几篇blog总结 ...

  10. HDU5904【瞎搞】

    哇咔咔,挂完. 靠着hack的100分挂在了rank167... 就是memset的问题,超时了:用map好了.. 思路: 标记a串以当前值为尾的上升子序列长度,然后还是搞b串,每次判一下当前值在a串 ...