图片上传的怪问题(谢谢帮忙)
最近做图片上传时,老不能成功
我用的是JBUILD+SQL SERVER2000
我用了网上说的标准方法(如下::)
第一个JSP页面:
<%@ page contentType="text/html;charset=gb2312" %>
<html><head><title>添加图片</title></head>
<body>
添加图片<br/>
<form method="post" action="insertNews.jsp" >
图像ID:<input name="id" size="10">
<br/>
选择图像:<input type="file" name="image">
<br/>
<input type="submit" value="上传" name="submit" size="25">
<input type="reset" value="清除" name="clear" size="25">
<br/>
</form>
</body></html>
第二个JSP页:
<%@ page language="java"%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%
String l="jdbc:odbc:yu'learning";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(l,"","");
//插入数据库
String sql="insert into image values(?,?,?)";
//获取传值ID
String id=request.getParameter("id");
%>
<%=id %>
<%//获取image的路径
String kk=request.getParameter("image");
//转换成file格式
File filename=new File(kk);
//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;
//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);
PreparedStatement ps =con.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,filename.getName());
ps.setBinaryStream(3,fis,l2);
//ps.setBinaryStream(3,fis,fis.available());
ps.executeUpdate();
//ps.execute();
ps.close();
fis.close();
out.println("ok!!!");
%>
但始终失败!!!!!!!!!!!!!!!出错提示如下:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java
^^^^
^^^
^^^^
而且我还发现一个问题,当我把第二个JSP页面改成下面这样的时候:
<%@ page language="java"%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%
String l="jdbc:odbc:yu'learning";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(l,"","");
//插入数据库
String sql="insert into image values(?,?,?)";
//获取传值ID
String id=request.getParameter("id");
%>
<%=id %>
<%//获取image的路径
String kk=request.getParameter("image");
out.println("ok!!!");
%>
"id"接受到的值老显示为null
这又是为什么呢?
请高人帮忙啊!!!!!!!!!!
问题点数:20、回复次数:9Top
1 楼InWang(振兴中华)回复于 2005-04-03 09:11:33 得分 0
第一个页面加上enctype="multipart/form-data"到<form method="post" action="insertNews.jsp" >
里面,即<form method="post" action="insertNews.jsp" enctype="multipart/form-data">
Top
2 楼java_jing(梦鸟)回复于 2005-04-03 10:50:16 得分 0
用组件 ,很多的Top
3 楼ddroyce()回复于 2005-04-03 11:09:32 得分 0
to:yukugua (与均)
我和你写的一样
怎么在ps.executeUpdate();一步时
报错:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: ')' 附近有语法错误。
Top
4 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-03 11:31:31 得分 0
:<input name="id" size="10">
????
改成:
:<input name="id" size="10"/>试试,格式不对呀,
不家最好不要手工定义ID,自动生成一个ID 那样好些,不会重
Top
5 楼xtuyaowu(tzjz)回复于 2005-04-03 12:05:23 得分 0
upTop
6 楼yukugua(与均)回复于 2005-04-03 16:34:33 得分 0
我 的数据库表三个字段image(id(系统可自动生成)
user_id(not null)
image )
我如果加上enctype="multipart/form-data",第一个JSP中连输入id的文本都不显示了,WHY?
问题也没解决啊!
解决了,要多少分都行啊,各位帮帮忙啊Top
7 楼nini_killer(杀手)回复于 2005-04-03 16:38:08 得分 0
不欣赏你在JSP页面中写如此多的代码??
MVC去看一下吧!!
Top
8 楼InWang(振兴中华)回复于 2005-04-04 19:53:37 得分 20
我一般是在数据库中存放一条路径,要读取的时候用它去访问。
加上enctype="multipart/form-data"后,表单递交的各个参数不能在用普通的getParameter,下面是个简单的例子:
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();
Request requestSu = su.getRequest();
String id=requestSu.getParameter("id");
Top
9 楼javafaq2004(I will survive)回复于 2005-04-05 09:36:36 得分 0
multipart/form-data
不能和普通数据一起传。
在服务器端也不能一起接收,要分开来。
Top




