论坛首页 入门技术论坛

jsp+servlet上传

浏览 7746 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-10-11  

今天很是郁闷,简简单单的一个利用jsp+servlet上传我就做了一个下午,到最后还是没成功.也没啥高深的.就是利用jspsmartupload这个组件.中间代码重要的也无非是几行代码.有几点疑问.先记录下来:<wbr></wbr>
1.我通过jsp页面提交到一个servlet中去处理上传.jsp页面用的是meth="post".结果在servlet中用request.getParamter();硬是取不到值;用get是可以的.不知道怎么解决?<wbr></wbr>
2.利用jspsmartupload组件的时候.<wbr></wbr>

java 代码
  1. //   新建一个SmartUpload对象   
  2.   SmartUpload su = new SmartUpload();    
  3.   
  4. //  获得上传文件的全物理路径   
  5.   String fpath=request.getParameter("file1");   
  6.   System.out.println(fpath);    
  7.   
  8.   //获得上传文件的文件名   
  9.   String[] files=fpath.split("\\\\");  
  10.   String fname = files[files.length-1];  
  11.   System.out.println(fname);   
  12.  
  13.    try {  
  14.     System.out.println("ddddd");   
  15.  //    上传初始化  
  16.     su.initialize(pageContext);   
  17.     System.out.println("cccc");   
  18. //     限制每个上传文件的最大长度。  
  19. //    su.setMaxFileSize(10000000);   
  20. //     限制总上传数据的长度。  
  21. //    su.setTotalMaxFileSize(20000000);   
  22. //     设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。  
  23.     su.setAllowedFilesList("doc,txt");  
  24. //     设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,  
  25. //    jsp,htm,html扩展名的文件和没有扩展名的文件。  
  26. //    su.setDeniedFilesList("exe,bat,jsp,htm,html,,");  
  27. //     上传文件  
  28.     su.upload();  
  29. su.save("upload/");   

可是在servlet里面是没有pageContext这个隐士对象的.怎么初始化这个上传组件呢?

java 代码
  1. java.lang.NegativeArraySizeException   
  2.  at com.jspsmart.upload.SmartUpload.upload(SmartUpload.java:218)   
  3.  at org.apache.jsp.result_jsp._jspService(result_jsp.java:85)   
  4.  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)   
  5.  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)   
  6.  at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)   
  7.  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)   
  8.  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)   
  9.  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)   
  10.  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)   
  11.  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)   
  12.  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)   
  13.  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)   
  14.  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)   
  15.  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)   
  16.  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)   
  17.  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)   
  18.  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)   
  19.  at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)   
  20.  at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)   
  21.  at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)   
  22.  at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)   
  23.  at java.lang.Thread.run(Thread.java:595)   


唉..不知道是我把问题弄复杂化了还是怎么的..忘一二啊.

<wbr></wbr>
3.当我在把处理页面由servlet转化到jsp页面中的时候,pageContext的问题得到了解决.但是同上的代码.却在su.upload()方法的时候抛出异常.<wbr></wbr>

   发表时间:2007-10-12  
你在jsp里面用的是 method="post" 但是不要忘记加 ENCTYPE="multipart/form-data"属性
还有就是必须用url传值才可以。我是这么做的,第三个错误也跟这个有关。
0 请登录后投票
   发表时间:2007-10-13  
wefiy..
前两天出差很忙.今天才看到你的评论.
很谢谢你帮忙分析我的疑问.
的确是在url传递的时候我没有用url传递过去.经过你的提醒.
现在解决了..呵呵
谢谢哦.
0 请登录后投票
   发表时间:2007-12-13  
还有人关注这个帖子吗,谢谢。用url在哪儿传值阿?
0 请登录后投票
   发表时间:2007-12-14  
引用

还有人关注这个帖子吗,谢谢。用url在哪儿传值阿?


js脚本里面设置url以及参数值.
<script type="text/javascript">
	function validator(){
	
		   var url = "";
		   var file1 = document.getElementById("file1").value;
		   if(file1 == null || file1 == "")
		   {
		     	alert('请选择需要上传的文件');
		     	return;
		   }else
		   {
		   		url = "result.jsp?file1="+file1;
		   		alert(url);
		   		document.frmup.action=url;
		   }
	   }
	</script>



<form action="result.jsp" method="post" enctype="multipart/form-data" name="frmup">
    <input type="file" name="file1"><br/>
    <input type="submit" name="upload" value="开始上传" onclick="validator();"><br/>
    </form>


不知道有没有明白
0 请登录后投票
   发表时间:2007-12-15  
建议不要使用jspsmartupload,它只能上传50M以内的文件
0 请登录后投票
   发表时间:2007-12-17  
引用

baichunlin    3 天前 

建议不要使用jspsmartupload,它只能上传50M以内的文件



老兄,现在JAVA都流行哪几种上传方式呀?
0 请登录后投票
   发表时间:2007-12-18  
neitnaco 写道
引用

还有人关注这个帖子吗,谢谢。用url在哪儿传值阿?


js脚本里面设置url以及参数值.
<script type="text/javascript">
	function validator(){
	
		   var url = "";
		   var file1 = document.getElementById("file1").value;
		   if(file1 == null || file1 == "")
		   {
		     	alert('请选择需要上传的文件');
		     	return;
		   }else
		   {
		   		url = "result.jsp?file1="+file1;
		   		alert(url);
		   		document.frmup.action=url;
		   }
	   }
	</script>



<form action="result.jsp" method="post" enctype="multipart/form-data" name="frmup">
    <input type="file" name="file1"><br/>
    <input type="submit" name="upload" value="开始上传" onclick="validator();"><br/>
    </form>


不知道有没有明白


document.frmup.action=url;
这一句不太明白,怎么是改变form的action属性??
不好意思,,刚才没看明白。是对的。。。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics