FileUpload
一upload原理:
1.表单的method必须是post方法
2.enctype属性必须是“mutipatr/form-data”类型
enctype默认的属性是“application/x-www-form-urlencoded”
enctype的作用是:告知服务器请求正文的MIME类型
application/x-www-form-urlencoded:username=aaa&password=123
ServletRequest.getParameter(String name),该方法是专门用来读取enctype是“application/x-www-form-urlencoded”时的方法
3.在Servlet里面通过request.getInputStream()方法就可以获得文件输入流
byte[] b= new byte[1024];
int len=0;
InputStream is = request.getInputStream();
while((len=is.read(b)) != -1){
System.out.println(new String(b,0 ,len));
}
代码示例
<%@ 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>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
请输入FileName<input type="text" name="FileName"/>
<input type="file"name="file"/>
<input type="submit" value="提交"/>
${pageContext.request.contextPath} </form> </body>
</html>
jspShow
package jcbc.ds.test1; import java.io.IOException;
import java.io.InputStream;
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; /**
* Servlet implementation class UploadServlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super(); } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建DiskFileItemFactory对象
//DiskFileItemFactory dis = new DiskFileItemFactory();
//创建ServletFileUpload对象
/*ServletFileUpload servletupload = new ServletFileUpload(dis);*/
byte[] b= new byte[1024];
int len=0;
InputStream is = request.getInputStream();
while((len=is.read(b)) != -1){
System.out.println(new String(b,0 ,len));
}
/*try {
List<FileItem> fileItem = servletupload.parseRequest(request);
for(FileItem items : fileItem) {
System.out.println(items.getName());
//进行解析传过来的数据进行封装
}
is.close(); } catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/ } }
ServerServlet
二借助第三方组件实现文件上传:
步骤:
1.拷贝jar包commons-fileupload.jar commons-io.jar
具体参考http://commons.apache.org/proper/commons-fileupload/using.html
2.//创建DiskFileItemFactory对象
DiskFileItemFactory disfileitemfactory = new DiskFileItemFactory();
//创建ServletFileUpload对象
ServletFileUpload servletupload = new ServletFileUpload(disfileitemfactory);
3.获取封装信息
List<FileItem> fileItem = servletupload.parseRequest(request);//这里会抛异常
具体步骤代码如下:
package jcbc.ds.test1; import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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;
import org.apache.commons.io.FileUtils; /**
* Servlet implementation class UploadServlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super(); } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gbk");
//创建DiskFileItemFactory对象
DiskFileItemFactory disfileitemfactory = new DiskFileItemFactory();
//创建ServletFileUpload对象
ServletFileUpload servletupload = new ServletFileUpload(disfileitemfactory); try {
//封装
List<FileItem> fileItem = servletupload.parseRequest(request);
for(FileItem files : fileItem ){
if(files.isFormField()){
System.out.println(files.getFieldName());
}
else{
InputStream is = files.getInputStream();
String name = files.getName();
//截取文件名
String fileName = name.substring(name.lastIndexOf("\\")+1);
System.out.println(fileName);//打印结果为huxuebing.txt System.out.println(request.getServletContext().getRealPath("/fileName"));
//创建File类对象
File file = new File(request.getServletContext().getRealPath("/")+fileName);
//判断该文件是否存在如果不存在就创建,存在就不创建
if(file.exists()==false){
System.out.println("==================");
file.createNewFile();
System.out.println("==================");
}
try {
//向创建的文件写入
files.write(file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } } catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
commontsUploadFiles
FileName
huxuebing.txt
D:\workSpace\web2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day18\fileName
==================
==================
result
FileUpload的更多相关文章
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- C#-WebForm-文件上传-FileUpload控件
FileUpload - 选择文件,不能执行上传功能,通过点击按钮实现上传 默认选择类型为所有类型 //<上传>按钮 void Button1_Click(object sender, E ...
- FileUpload组件
package com.itheima.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IO ...
- 如何实现修改FileUpload样式
这里先隐藏FileUpload 然后用一个input button和一个text来模拟FileUpload 具体代码为 <asp:FileUpload ID="FileUpload1& ...
- 上传文件fileupload
文件上传: 需要使用控件-fileupload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.va ...
- fileupload图片预览功能
FileUpload上传图片前首先预览一下 看看效果: 在专案中,创建aspx页面,拉上FileUpload控件一个Image,将用来预览上传时的图片. <%@ Page Language=&q ...
- textbox button 模拟fileupload
方案一: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.asp ...
- FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输
fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...
- C# 自定义FileUpload控件
摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...
- FileUpload实现文件上传(包含多文件)
package com.hzml.serve; import java.io.File; import java.io.IOException; import java.io.PrintWriter; ...
随机推荐
- ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应
1.png图片不透明 少量图片时:使用滤镜: _background:none; _filter:prodig:DXImageTransform.Microsoft.AlphaImageLoader( ...
- 详细解析 RxAndroid 的使用方式
RxAndroid是RxJava的扩展, 优雅地处理异步请求. RxAndroid配合Lambda表达式, 精简处理回调, 使程序更具有可读性. Rx作为Android最优秀的开源库之一, 极大地提高 ...
- 如何在Ubuntu 14.04中使用Samba共享文件
Linux 下的文件共享利器 Samba 想必大家已经非常熟悉了,今天我们介绍下如何在Ubuntu 14.04中使用 Samba 共享网络文件.打印机和其它公共资源. 1.安装 Samba 和图形配置 ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
- PyQt4环境搭建与使用
初次使用python写图形界面的工具时,用了Tkinter.wxpython,都是需要手写界面布局的,看api看的头疼觉得这样写太费劲了,于是搜了下看看别人都是怎样写python图形界面的. 在论坛上 ...
- IE6双倍margin间距解决方法
虽然现在很少有人在用ie6了,但作为前端人员,是不的不面对的问题. 在ie6中,使用float后的元素,在margin—left,这是你会发现距离和你想的不一样,其他的浏览器又是正常的,增大margi ...
- Number Sequence(HDU 1005 构造矩阵 )
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Android ndk第一步,构建jni headers
转载请注明出处:http://www.cnblogs.com/fpzeng/p/4281801.html 源码请见 https://github.com/fpzeng/HelloJNI PC系统: u ...
- OCR中的倾斜矫正
电面中被问到了做的LPR,简单的介绍了下后又问到了关于如何矫正倾斜角的问题.答得比较含糊,所以今天来补充一下. 倾斜矫正的方法有很多种,包括基于Hough变换的矫正,基于字符投影的倾角矫正,常规线性角 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...