上传问题 着急!!!!!!!!!!!!!!!!!!!!

xql80329 2008-06-05 05:59:11
	String tempRepository = request.getParameter("fileChange").replace("\\","\\\\");
System.out.println(tempRepository+"/////////////////");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(tempRepository));
factory.setSizeThreshold(4096);

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(1000000000);
List fileItems = upload.parseRequest(request);
//List fileItems = fu
System.out.println("/////////////////////");
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
long size;
String name;
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
name = item.getName();
size = item.getSize();
if(size>1000000000){
return new ModelAndView("console/sys/upgrade/fail.jsp");

}
if((name==null || name.equals("")) && size==0)
continue;

//保存上传的文件到指定的目录
File file = new File(name);
name = file.getName();
System.out.println("name===="+name);
item.write(new File("\\dhcc\\forceview\\update"+ name));//该路径为linux路径
}
}
...全文
1951 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeffreyvanwowglp 2009-03-08
  • 打赏
  • 举报
回复
commons-fileupload.jar的问题
zidasine 2008-06-06
  • 打赏
  • 举报
回复
支持总结的做法
duzhonghua 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xql80329 的回复:]
昨天的问题解决了
顺便 小结一下吧.
1.使用fileupload组件上传 不需要刻意获取文件路径.

Java code String tempRepository = request.getParameter("fileChange").replace("\\","\\\\");//该句可以删除


2.在linux的路径应该是"/" 而非 "\\".
3.需要在JSP <
Java codeform>中添加 ENCTYPE="multipart/form-data"




感谢帮助解决问题的朋友们!!
[/Quote]
楼主的小结不错,支持下,这样我们如果将来遇到同类问题,也可以避免了咯
xql80329 2008-06-06
  • 打赏
  • 举报
回复
昨天的问题解决了
顺便 小结一下吧.
1.使用fileupload组件上传 不需要刻意获取文件路径.
 String tempRepository = request.getParameter("fileChange").replace("\\","\\\\");//该句可以删除

2.在linux的路径应该是"/" 而非 "\\".
3.需要在JSP <
form>中添加  ENCTYPE="multipart/form-data"



感谢帮助解决问题的朋友们!!
jdlsfl 2008-06-05
  • 打赏
  • 举报
回复
学习
老紫竹 2008-06-05
  • 打赏
  • 举报
回复
System.out.println("factory="+factory);
System.out.println("tempRepository="+tempRepository);
factory.setRepository(new File(tempRepository));

打印出来看看,到底哪个是null
tavor 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xql80329 的回复:]
按楼上的加上了

现在出现新问题了


Java codefactory.setRepository(new File(tempRepository));


报空指针异常
tempRepository这个参数 需要什么格式的
或者说需要什么样的参数
[/Quote]

你调试一下是哪个报的空指针呀,是codefactory,还是tempRepository?我们在这根本确定不了了呀
律己修心 2008-06-05
  • 打赏
  • 举报
回复
关注
学习
收藏
帮顶
不懂
接分
KKK2007 2008-06-05
  • 打赏
  • 举报
回复
header头设置问题
ldy214 2008-06-05
  • 打赏
  • 举报
回复
文件上传之jspSmartUpload
将jspSmartUpload.jar置于WEB-INF\lib下

----------------------------------------------------------

Jspsmart1.html

<html>
<head>
<title>Jspsmart1.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<form name="Form1" enctype="multipart/form-data" method="post" action="Jspsmart1.jsp">
<p>上传文件 1:<input type="file" name="File1" size="20" maxlength="20"></p>
<input type="submit" value="上传">
<input type="reset" value="清除">
</form>

</body>
</html>

Jspsmart1.jsp

<%@ page import="com.jspsmart.upload.*" %>
<%@ page contentType="text/html;charset=GB2312" %>

<html>
<head>
<title>Jspsmart1.jsp</title>
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
//计算文件上传个数
int count=0;

//SmartUpload的初始化,使用这个jspsmart一定要在一开始就这样声明
mySmartUpload.initialize(pageContext);

//生命限制上传的文件大小为 5 MB
mySmartUpload.setMaxFileSize(5 * 1024 * 1024);

//依据form的内容上传
mySmartUpload.upload();

try {
//将文件存放于D:\totalExample\jsp\UploadFile\
count = mySmartUpload.save("D:\\totalExample\\jsp\\UploadFile\\");

//打印出上传文件的个数
out.println("您成功上传"+count + "个文件.");

} catch (Exception e) {
out.println(e.toString());
}
%>
</body>
</html>

---------------------------------------------------------------------

Jspsmart2.html

<html>
<head>
<title>Jspsmart3.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<form name="Form1" enctype="multipart/form-data" method="post" action="Jspsmart2.jsp">
<p>上传文件 1:<input type="file" name="File1" size="20" maxlength="20"></p>
<input type="submit" value="上传">
<input type="reset" value="清除">
</form>

</body>
</html>

Jspsmart2.jsp

<%@ page import="com.jspsmart.upload.*" %>
<%@ page contentType="text/html;charset=GB2312" %>

<html>
<head>
<title>Jspsmart2.jsp</title>
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
//计算文件上传个数
int count=0;

//SmartUpload的初始化,使用这个jspsmart一定要在一开始就这样声明
mySmartUpload.initialize(pageContext);

//依据form的内容上传
mySmartUpload.upload();

//将上传的文件一个一个取出来处理
for (int i=0;i<mySmartUpload.getFiles().getCount();i++)
{
//取出一个文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);

//如果文件存在,则做存档操作
if (!myFile.isMissing()) {

//将文件存放于绝对路径的位置
myFile.saveAs("D:\\totalExample\\jsp\\UploadFile\\" + myFile.getFileName(), mySmartUpload.SAVE_PHYSICAL);

//显示此上传文件的详细信息
out.println("FieldName = " + myFile.getFieldName() + "<BR>");
out.println("Size = " + myFile.getSize() + "<BR>");
out.println("FileName = " + myFile.getFileName() + "<BR>");
out.println("FileExt = " + myFile.getFileExt() + "<BR>");
out.println("FilePathName = " + myFile.getFilePathName() + "<BR>");
out.println("ContentType = " + myFile.getContentType() + "<BR>");
out.println("ContentDisp = " + myFile.getContentDisp() +"<BR>");
out.println("TypeMIME = " + myFile.getTypeMIME() +"<BR>");
out.println("SubTypeMIME = " + myFile.getSubTypeMIME() + "<BR>");
count ++;
}
}

// 显示应该上传的文件数目
out.println("<BR>" + mySmartUpload.getFiles().getCount() + " files could be uploaded.<BR>");

// 显示成功上传的文件数目
out.println(count + "file(s) uploaded.");
%>

</body>
</html>

------------------------------------------------------------------------------

Jspsmart3.html

<html>
<head>
<title>Jspsmart3.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<form name="Form1" enctype="multipart/form-data" method="post" action="Jspsmart2.jsp">
<p>上传文件 1:<input type="file" name="File1" size="20" maxlength="20"></p>
<input type="submit" value="上传">
<input type="reset" value="清除">
</form>

</body>
</html>

Jspsmart3.jsp

<%@ page import="com.jspsmart.upload.*" %>
<%@ page contentType="text/html;charset=GB2312" %>

<html>
<head>
<title>Jspsmart3.jsp</title>
</head>
<body>

<h2>文件上传范例 - jspSmart</h2>

<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%

//计算文件上传个数
int count=0;

//SmartUpload之初始化,使用这个jspsmart一定要在一开始就这样声明
mySmartUpload.initialize(pageContext);

//声明可以上传的文件类型
mySmartUpload.setAllowedFilesList("htm,html,txt,,");

//限制存档位置,可存档于绝对位置
mySmartUpload.setDenyPhysicalPath(false);

//依据 form之内容上传
mySmartUpload.upload();

//将文件用原本的名字存放于server上的相对路径
try {
count = mySmartUpload.save("D:\\totalExample\\jsp\\UploadFile\\", mySmartUpload.SAVE_PHYSICAL);

} catch (Exception e) {

out.println("<b>Wrong selection : </b>" + e.toString());
}

//打印出总共上传文件个数
out.println(count + " file(s) uploaded.");
%>

</body>
</html>

---------------------------------------------------------------

download.jsp

<%@ page import="com.jspsmart.upload.*" %>
<%@ page contentType="text/html;charset=GB2312" %>

<html>
<head>
<title> download.jsp</title>
</head>
<body>

<h2>文件下载范例 - jspSmart</h2>

<jsp:useBean id="mySmartUpload" scope="page"
class="com.jspsmart.upload.SmartUpload" />

<%
// SmartUpload之初始化
mySmartUpload.initialize(pageContext);

//必须如此声明,否则将会把文件显示于浏览器中
mySmartUpload.setContentDisposition("inline;");

//将 sample.zip下载,下载默认名称为downloaded.zip
mySmartUpload.downloadFile("C:\\upload\\sample.zip",
"application/x-zip-compressed",
"downloaded.zip");
%>

</body>
</html>

注意事项:

一般输入类型(例如,text、password、select,等等)传送Form到服务器端时,所用的编码方式是application/x-www-form-urlencoded,但是若要传送文件至服务器端时,必须使用mutilpart/form-data的编码方式;

Jspsmart2.jsp中斜体字部分可以用来重命名上传的文件

jspSmartUpload上传过程对于文件名包含汉字的情况是比较理想的,但是下载时的支持就不太好了。如果供下载的文件名包含汉字,则提示下载的文件名缺省为一串随即的乱码(探索这个问题的解决)
qq278095755 2008-06-05
  • 打赏
  • 举报
回复
是这个tempRepository变量空指针么?
xql80329 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 java2000_net 的回复:]

1 可以是绝对路径的一个文件名,比如 "c:/1234.gif"
2 也可以是一个 URL

你应该去看看 File的 API文档
[/Quote]
这个我知道
老紫竹 2008-06-05
  • 打赏
  • 举报
回复
tempRepository

1 可以是绝对路径的一个文件名,比如 "c:/1234.gif"
2 也可以是一个 URL

你应该去看看 File的 API文档
xql80329 2008-06-05
  • 打赏
  • 举报
回复
按楼上的加上了

现在出现新问题了

factory.setRepository(new File(tempRepository));

报空指针异常
tempRepository这个参数 需要什么格式的
或者说需要什么样的参数
hjy273 2008-06-05
  • 打赏
  • 举报
回复
页面是什么编码格式?
yeecheng 2008-06-05
  • 打赏
  • 举报
回复
楼上的说的不错,文件上传要用multipart/form-data编码
tavor 2008-06-05
  • 打赏
  • 举报
回复
你检查一下你的form是不是post,是不是和下面的一样

<FORM ENCTYPE="multipart/form-data" ACTION="your url" METHOD=POST>
wxinb 2008-06-05
  • 打赏
  • 举报
回复
上传文件的JSP有问题吧
<form method="post" enctype="multipart/form-data" ....>
文件上传应该指定enctype哈
multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
vinivainy 2008-06-05
  • 打赏
  • 举报
回复
前端的表单有这个值吗?multipart/form-data
获取文件的时候好像有点问题,有个类可以获取前端所有的文件,是一个数组吧
呵呵,我是个菜鸟,具体没有做过,看过一些
xql80329 2008-06-05
  • 打赏
  • 举报
回复
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:768)
org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:323)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:341)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
com.dhcc.flowshaper.console.sys.upgrade.UpdatingController.onSubmit(UpdatingController.java:57)
com.dhcc.core.commons.BaseController.handle(BaseController.java:28)
org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestInternal(AbstractCommandController.java:82)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:796)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:727)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.dhcc.core.utils.EncodingFilter.doFilter(EncodingFilter.java:27)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧