麻烦大家进来帮我看段代码!

sai_show 2009-03-09 11:20:00
这是一个关于fileupload 实现上传图片的并保存文件名到数据库的代码,我第一次用fileupload 我不太清楚我这样写那错了
麻烦熟悉的帮忙指正下好吗?
[code=Java]
<%
<%
request.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gb2312");
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
List list=upload.parseRequest(request);
Commodity product = new Commodity();
for(int i=0;i<list.size();i++){
FileItem item=(FileItem)list.get(i); //循环读取出每个参数
//判断当前的这个item是一个普通的表单元素,还是一个文件域元素
if(item.isFormField()==true){ //true表明这是一个普通的表单元素
if(item.getFieldName().equals("name")){
product.setSerialNumber(item.getString("utf-8"));
}if(item.getFieldName().equals("serialNumber")){
product.setName(item.getString("utf-8"));
}if(item.getFieldName().equals("brand")){
product.setBrand(item.getString("utf-8"));
}if(item.getFieldName().equals("model")){
product.setModel(item.getString("utf-8"));
}if(item.getFieldName().equals("price")){
product.setPrice(Double.parseDouble(item.getString("utf-8")));
}if(item.getFieldName().equals("description")){
product.setDescription(item.getString("utf-8"));
}

}else{ //false 表示这个item是一个文件域
//判断这是不是一个空值
if(item.getName()!=null&& !item.getName().equals("")){
//下面开始真正的保存到Tomcat服务器对应站点的目录images下
File file=new File(item.getName());

//真正保存上传图片的文件
File realFile=new File(pageContext.getServletContext().getRealPath("/")+"images",file.getName());
request.getParameter(file.getName());
item.write(realFile);

}
}
}

CommodityDao productDao = new CommodityDaoImpl();

int count = productDao.insertCommodity(product);
if (count > 0)
out
.print("<script type='text/javascript'>alert('成功添加一条商品信息。');location.replace('addProduct.jsp');</script>");
else
out
.print("<script type='text/javascript'>alert('添加失败。');history.go(-1);</script>");

%>
<script type="text/javascript">
function fun_check_form(){
if(document.form1.serialNumber.value==""){
alert("请输入商品编号(系列)信息信息。");
return false;
}else if(document.form1.name.value==""){
alert("请输入商品名称。");
return false;
}else if(document.form1.brand.value==""){
alert("请输入商品商标。");
return false;
}else if(document.form1.model.value==""){
alert("请输入商品型号。");
return false;
}else if(document.form1.price.value==""){
alert("请输入商品价格。");
return false;
if(!isNaN(document.form1.price.value)){
alert("");
return false;
}
}else{
return true;
}
}


function checkIsFloat(){
var nc=event.keyCode;
if(nc < 48 || nc > 57 ){
if(nc==46){
var s=document.form1.price.value;
for(var i=0;i<s.length;i++){
if(s.charAt(i)=='.'){
event.keyCode=0;
return;
}
}
}else{
event.keyCode=0;return;

}
}
}
</script>
</head>

<body>
<form name="form1" action="addProduct.jsp" method="post" enctype="multipart/form-data"
onSubmit="return fun_check_form()">
<table cellspacing="1" cellpadding="4" width="100%" class="tableborder"
id="table3">

<input type="hidden" name="action" value="save">
<tr>
<td colspan="12" class="header">添加商品信息</td>
</tr>
<tr>
<td class="altbg1">商品编号(系列):</td>
<td class="altbg2" colspan="11"><input type="text"
name="serialNumber" size="34"></td>
</tr>
<tr>
<td class="altbg1">商品名称:</td>
<td class="altbg2" colspan="11"><input type="text" name="name"
size="34"></td>
</tr>
<tr>
<td class="altbg1">商品商标:</td>
<td class="altbg2" colspan="11"><input type="text" name="brand"
size="34"></td>
</tr>
<tr>
<td class="altbg1">商品型号:</td>
<td class="altbg2" colspan="11"><input type="text" name="model"
size="34"></td>
</tr>
<tr>
<td class="altbg1">商品价格:</td>
<td class="altbg2" colspan="11"><input type="text" name="price"
size="34" onkeypress="checkIsFloat();" /></td>
</tr>
<tr>
<td class="altbg1">商品图片:</td>
<td class="altbg2" colspan="11"><input type="file" name="file"
size="30"></td>
</tr>
<tr>
<td class="altbg1">商品介绍:</td>
<td class="altbg2" colspan="11"><textarea rows="5" cols="60"
name="description"></textarea></td>
</tr>


<tr>
<td class="altbg1"></td>
<td class="altbg2" colspan="11"><input type="submit" value="提交"
name="B1" />   <input type="reset" value="重置" name="B2" /></td>
</tr>

</table>
</form>


Myecliops报的错 是说 List list=upload.parseRequest(request); 有错! 我下面的表单是提交当前页面。 我前面的都是按照视频里面打的
但是不懂为什么 list这里会报错 应该导入的包全部导入完整!
希望高人指点

...全文
573 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz4241515 2011-11-02
  • 打赏
  • 举报
回复
8楼的朋友 我用了那个属性ruquest获取不到那个值那我该用什么方法获取那个值
andesen 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 sai_show 的回复:]
request.getParameter(file.getName());
[/Quote]
包含ENCTYPE="multipart/form-data"属性,那么request 是获取不到你表单的数据的
cnfnnui 2010-09-25
  • 打赏
  • 举报
回复
今天上午也遇到这样的情况
我的原因是我打开的是个showModalDialog
form在这个对话框内找不到form属性
换成window.open问题解决
xiaoyededaima 2010-02-03
  • 打赏
  • 举报
回复
我的form 表单时这样写的
<form action="/Xiaoye/InsertServlet" enctype="multipart/form-data" method="post">

在servlet中 List fileItems=fu.parseRequest(request);
本地上传文件时没有出现问题,但是远地上传就报异常了

异常内容如下:
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
sai_show 2009-03-10
  • 打赏
  • 举报
回复
错误提示如下


org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/addProduct.jsp at line 21

18: response.setContentType("text/html;charset=gb2312");
19: DiskFileItemFactory factory=new DiskFileItemFactory();
20: ServletFileUpload upload=new ServletFileUpload(factory);
21: List list=upload.parseRequest(request);
22: Commodity product = new Commodity();
23: for(int i=0;i<list.size();i++){
24: FileItem item=(FileItem)list.get(i); //循环读取出每个参数


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

javax.servlet.ServletException: org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.admin.addProduct_jsp._jspService(addProduct_jsp.java:253)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:885)
org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
org.apache.jsp.admin.addProduct_jsp._jspService(addProduct_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)



tuke0001 2009-03-10
  • 打赏
  • 举报
回复
建议把错误信息也一起贴出来
fanyuanwaifdl 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wj_18 的回复:]
HTML code
<form name="form1" action="addProduct.jsp" method="post" enctype="multipart/form-data"
onSubmit="return fun_check_form()">



这里的onSubmit会对表单提交的数据又影响,把他换成action就可以了

如果你不确定的情况下,可以先不用onSubmit,用个纯提交按钮提交下,应该就没事了
[/Quote]·
wj_18 2009-03-10
  • 打赏
  • 举报
回复

<form name="form1" action="addProduct.jsp" method="post" enctype="multipart/form-data"
onSubmit="return fun_check_form()">


这里的onSubmit会对表单提交的数据又影响,把他换成action就可以了

如果你不确定的情况下,可以先不用onSubmit,用个纯提交按钮提交下,应该就没事了
rascalboy520 2009-03-10
  • 打赏
  • 举报
回复
the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null

<form name="form1" action="addProduct.jsp" method="post" enctype="multipart/form-data" onSubmit="return fun_check_form()">

后面要加个分号,

<form name="form1" action="addProduct.jsp" method="post" enctype="multipart/form-data" onSubmit="return fun_check_form();">

如是还不行,就按一楼的,

81,092

社区成员

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

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