2007-10-11
jsp+servlet上传
关键字: 疑问今天很是郁闷,简简单单的一个利用jsp+servlet上传我就做了一个下午,到最后还是没成功.也没啥高深的.就是利用jspsmartupload这个组件.中间代码重要的也无非是几行代码.有几点疑问.先记录下来:
1.我通过jsp页面提交到一个servlet中去处理上传.jsp页面用的是meth="post".结果在servlet中用request.getParamter();硬是取不到值;用get是可以的.不知道怎么解决?
2.利用jspsmartupload组件的时候.
java 代码
- // 新建一个SmartUpload对象
- SmartUpload su = new SmartUpload();
- // 获得上传文件的全物理路径
- String fpath=request.getParameter("file1");
- System.out.println(fpath);
- //获得上传文件的文件名
- String[] files=fpath.split("\\\\");
- String fname = files[files.length-1];
- System.out.println(fname);
- try {
- System.out.println("ddddd");
- // 上传初始化
- su.initialize(pageContext);
- System.out.println("cccc");
- // 限制每个上传文件的最大长度。
- // su.setMaxFileSize(10000000);
- // 限制总上传数据的长度。
- // su.setTotalMaxFileSize(20000000);
- // 设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
- su.setAllowedFilesList("doc,txt");
- // 设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
- // jsp,htm,html扩展名的文件和没有扩展名的文件。
- // su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
- // 上传文件
- su.upload();
- su.save("upload/");
可是在servlet里面是没有pageContext这个隐士对象的.怎么初始化这个上传组件呢?
java 代码
- java.lang.NegativeArraySizeException
- at com.jspsmart.upload.SmartUpload.upload(SmartUpload.java:218)
- at org.apache.jsp.result_jsp._jspService(result_jsp.java:85)
- at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
- at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
- at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
- at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
- at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
- at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
- at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
- at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
- at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
- at java.lang.Thread.run(Thread.java:595)
唉..不知道是我把问题弄复杂化了还是怎么的..忘一二啊.
3.当我在把处理页面由servlet转化到jsp页面中的时候,pageContext的问题得到了解决.但是同上的代码.却在su.upload()方法的时候抛出异常.
评论
assemble
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属性??
不好意思,,刚才没看明白。是对的。。。
neitnaco
2007-12-17
引用
baichunlin 3 天前
建议不要使用jspsmartupload,它只能上传50M以内的文件
老兄,现在JAVA都流行哪几种上传方式呀?
baichunlin
2007-12-15
建议不要使用jspsmartupload,它只能上传50M以内的文件
neitnaco
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>
不知道有没有明白
lifuqiong00
2007-12-13
还有人关注这个帖子吗,谢谢。用url在哪儿传值阿?
neitnaco
2007-10-13
wefiy..
前两天出差很忙.今天才看到你的评论.
很谢谢你帮忙分析我的疑问.
的确是在url传递的时候我没有用url传递过去.经过你的提醒.
现在解决了..呵呵
谢谢哦.
前两天出差很忙.今天才看到你的评论.
很谢谢你帮忙分析我的疑问.
的确是在url传递的时候我没有用url传递过去.经过你的提醒.
现在解决了..呵呵
谢谢哦.
wefiy
2007-10-12
你在jsp里面用的是 method="post" 但是不要忘记加 ENCTYPE="multipart/form-data"属性
还有就是必须用url传值才可以。我是这么做的,第三个错误也跟这个有关。
还有就是必须用url传值才可以。我是这么做的,第三个错误也跟这个有关。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4424 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
很酷的图片哦.
共 1 张
共 1 张
最近加入圈子
最新评论
-
为什么要用strust.hiberna ...
框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验 ...
-- by neitnaco -
JBuilder编译和运行都没问 ...
原来是我机器上安装嘞两个版本的jdk版本.机器环境是jdk1.5的版本.然后jb ...
-- by neitnaco -
jsp+servlet上传
neitnaco 写道引用 还有人关注这个帖子吗,谢谢。用url在哪儿传值阿? ...
-- by assemble -
jsp+servlet上传
引用 baichunlin 3 天前 建议不要使用jspsmartu ...
-- by neitnaco -
jsp+servlet上传
建议不要使用jspsmartupload,它只能上传50M以内的文件
-- by baichunlin






评论排行榜