java 上传byte_java servlet 文件上传

[资源都是来自网上。本实例将展示使用Flex和java servlet上传文件。  事前准备就是到 http://commons.apache.org 下载common-fileupload-1.1.1.jar以及common-io-1.2.jar两

后台代码:

package com.lk.test;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.util.ArrayList;

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.DiskFileUpload;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

public class UploadServlet extends HttpServlet {

/**

* 文件上传

*/

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request,response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

//解析request对象

DiskFileUpload dfu = new DiskFileUpload();

//存放上传文件路径

List fileUrls = new ArrayList();

try {

//解析request中表单所有值放入集合中

List fileItems = dfu.parseRequest(request);

for (FileItem fileItem :fileItems) {

if(fileItem.isFormField()){//如果是文本域

if("desc1".equals(fileItem.getFieldName())){

InputStream in =  fileItem.getInputStream();

byte[] bt = new byte[in.available()];

in.read(bt);

in.close();

//获取文本域值

String desc1 = new String(bt,"utf-8");

System.out.println(desc1);

}

if("desc2".equals(fileItem.getFieldName())){

InputStream in =  fileItem.getInputStream();

byte[] bt = new byte[in.available()];

in.read(bt);

in.close();

//获取文本域值

String desc2 = new String(bt,"utf-8");

System.out.println(desc2);

}

}else{//否则为文件域

//打印保存上传文件路径

System.out.println(this.getServletContext().getRealPath("upload"));

//     if("file1".equals(fileItem.getFieldName())){

if(fileItem.getName()!=null&&!"".equals(fileItem.getName())){

//客户端文件

File remoteFile = new File(fileItem.getName());

//上传文件在服务器端的路径保存集合中

fileUrls.add(request.getContextPath()+"/upload/"+remoteFile.getName());

//定义服务器下文件

File servFile = new File(this.getServletContext().getRealPath("upload"),remoteFile.getName());

//创建文件夹

servFile.getParentFile().mkdirs();

//读取客户端文件输入流

InputStream in =  fileItem.getInputStream();

//定义写入服务器文件流

OutputStream os = new FileOutputStream(servFile);

//定义字节数组

byte[] bt = new byte[in.available()];

//对流进行读和写

for (;;) {

int len = in.read(bt);

if(len==-1){

break;

}

os.write(bt, 0, len);

}

//关闭输入输出流

if(os!=null){

os.flush();

os.close();

}

if(in!=null){

in.close();

}

}

//     }

}

}

} catch (FileUploadException e) {

e.printStackTrace();

}

PrintWriter out = response.getWriter();

out.print("上传成功!");

out.print("
");

for (int i = 0; i < fileUrls.size(); i++) {

out.print("上传文件"+(i+1)+"");

out.print("
");

}

out.flush();

out.close();

}

}

jsp前台代码

上传文件

文件上传一:

文件一说明:

文件上传二:

文件二说明:

所用到jar

commons-fileupload.jar

commons-io.jar

浏览器打开中文文件名的问题解决

解决办法:

第一步,修改tomcat的服务器配置文件(server.xml)

在connector上加入:URIEncoding="UTF-8"

加入后的结果形式如下:

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>

第二步,重新启动tomcat

第三步,修改IE的配置参数

在IE菜单的“工具”-->“internet选项”中,

将“总是以utf-8发送URL”前的勾号选上,

第四步,关闭所有IE窗口,重新打开IE。

如果是Apache与Tomcat配合搭建web平台的,还要修改(或加入)ajp连接器的URIEncoding选项。 】

希望碰到类似问题的朋友们注意。

[没有中文乱码问题。 1. 客户端使用HTML + JavaScript(AJAX)

        Uploa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值