您的位置:首页 >> 编程开发 >> Java >> JavaBeans >> 正文
RSS
 

JSP文件上传体会(采用JAVABEAN上传)

http://www.rdxx.com 02年11月10日 10:42 互联网 我要投稿

关键词: 文件上传 , 体会 , 上传 , JSP , JavaBean , 文件 , BEA , Java
 

JSP文件上传体会(采用JAVABEAN上传)

 

从网上当了一个例子,发觉上传图片文件时图片文件中内容发生了变化,最大的变化时所有的FF变成了3F

也就是说输出时把字符当成有符号传送了?(是这样把?)

使用代码如下:

PrintWriter pw = new PrintWriter(new BufferedWriter(new

FileWriter((savePath==null? "" : savePath) + filename)));

while (i != -1 && !newLine.startsWith(boundary)) {

// 文件内容的最后一行包含换行字符

// 因此我们必须检查当前行是否是最

// 后一行

i = in.readLine(line, 0, 1280);

if ((i==boundaryLength+2 || i==boundaryLength+4)

&& (new String(line, 0, i).startsWith(boundary)))

pw.print(newLine.substring(0, newLine.length()-2));

else

pw.print(newLine);

newLine = new String(line, 0, i);

 

}

pw.close();

 

但是总是不行,后来我把PrintWriter用FileOutputStream替代,代码如下:

FileOutputStream pw=new FileOutputStream((savePath==null? "" : savePath) + filename);

//PrintWriter pw = new PrintWriter(new BufferedWriter(new

//FileWriter((savePath==null? "" : savePath) + filename)));

while (i != -1 && !newLine.startsWith(boundary)) {

// 文件内容的最后一行包含换行字符

// 因此我们必须检查当前行是否是最

// 后一行

i = in.readLine(line, 0, 1280);

if ((i==boundaryLength+2 || i==boundaryLength+4)

&& (new String(line, 0, i).startsWith(boundary)))

pw.write(newLine.substring(0, newLine.length()-2).getBytes("ISO8859_1"));

else

pw.write(newLine.getBytes("ISO8859_1"));

newLine = new String(line, 0, i,"ISO8859_1");

 

}

pw.close();

竟然就可以了,那个转换的编码还一定要上才行,不然也不干活的,真是郁闷,这跨平台就不能让写CODE的人解放解放,一个输出都N多类,看着心寒,想着简直想死啊

哎 忙了我一个下午,原来就是这回事

 

下面把原代码附上,是把别人的代码改吧改吧放上来的,还请原作者不要见意:

Java bean 文件:

package cr.web;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.ServletInputStream;

import java.util.Dictionary;

import java.util.Hashtable;

import java.io.PrintWriter;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.*;

public class FileUploadBean {

 

private String savePath, filepath, filename, contentType;

private byte[] b;

byte t;

private Dictionary fields;

 

public String getFilename() {

return filename;

}

 

public String getFilepath() {

return filepath;

}

 

public void setSavePath(String savePath) {

this.savePath = savePath;

}

 

public String getContentType() {

return contentType;

}

 

public String getFieldValue(String fieldName) {

if (fields == null || fieldName == null)

return null;

return (String) fields.get(fieldName);

}

 

private void setFilename(String s) {

if (s==null)

return;

 

int pos = s.indexOf("filename=\"");

if (pos != -1) {

filepath = s.substring(pos+10, s.length()-1);

// Windows浏览器发送完整的文件路径和名字

// 但Linux/Unix和Mac浏览器只发送文件名字

pos = filepath.lastIndexOf("\\");

if (pos != -1)

filename = filepath.substring(pos + 1);

共3页  第1页 第2页 第3页

 
 
标签: 文件上传 , 体会 , 上传 , JSP , JavaBean , 文件 , BEA , Java 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站