为什么将图片的路径存进数据库的时候没有斜杆呢 本来存进数据库的路径名称应该是E:\s\这种才对,怎么放进数据库就变成了E:S这样了,这样我读出图片就肯定显示不了了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该数据库不支持直接插入\,因为这是一个特殊字符,使用File.separator替换试一下 额。什么意思???我的代码是以下<%@page import="java.sql.*"%><%@page import="java.io.*"%><%@page import="java.util.*"%><%@page import="com.oreilly.servlet.MultipartRequest"%><%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%><%@page contentType="text/html; charset=gb2312" %><html> <%Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection d = DriverManager.getConnection("jdbc:mysql://localhost:3306/learnjsp?user=chen&password=8811098"); Statement stmt=d.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);String ph_CateID=request.getParameter("ph_CateID"); String ph_Name=request.getParameter("ph_Name");String message=request.getParameter("message");String saveDirectory ="E:/Jbuilder/workspace/123/WebContent/upload";//每个文件最大5m,最多3个文件,所以...int maxPostSize =3 * 5 * 1024 * 1024 ;//response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "gb2312");//输出反馈信息Enumeration files = multi.getFileNames(); while (files.hasMoreElements()) { System.err.println("ccc"); String name = (String)files.nextElement(); File f = multi.getFile(name); if(f!=null){ String fileName = multi.getFilesystemName(name); String lastFileName= fileName; stmt.executeUpdate("INSERT INTO photo(ph_CateID,ph_Name,message,piccontent) VALUES('"+ph_CateID+"','"+fileName+"','"+message+"','"+f+"')"); out.println("上传的文件:"+f); out.println("<hr>"); } }%></html> 这个,一般做法是不把绝对路径放到数据库里的,因为这个绝对路径一般是在SERVLET或者JSP或者ACTION里获得.用request.getSession().getServletContext().getRealPath()可以获得WEB服务的绝对路径,就类似你项目里的E:/Jbuilder/workspace/123/WebContent/, (JBUDER很久不用了,有点忘记,不过应该是这个,呵呵)到这里你就可以直接指定图片路径了.而数据库里只有图片的文件名,到SERVLET或者JSP或者ACTION里去拼接.具体方法这样(HOHO,正好无聊,帮你写写)String webPath = request.getSession().getServletContext().getRealPath();(这里最好你自己用IDE的提示提出来,我手写的,万一错了会害死你,哈哈)String filePath = webPath+"/*upload(?这个是你图片在WEB上的相对路径)*/"+fileName;//fileName从数据库里扯出来哦,页面上就扔filePath去显示吧,OY~~~~~~插库,你的String saveDirectory ="E:/Jbuilder/workspace/123/WebContent/upload"; 这一大串就干掉了,丢文件名就好了.恩恩,搞定. 啊!果然错了点.....NND,手写就是会忘记点什么什么什么,修改: request.getSession().getServletContext().getRealPath("/")少加一"/",郁闷 直接把图片的名字存起来不是很好嘛 SmartUpload picdoc=new SmartUpload(); picdoc.initialize(pageContext); //初始化 //picdoc.service(request,response); //接收请求 picdoc.upload(); //上传//对你的图片重命名 productupload为你存入图片的地方 String rename = null; if(!picdoc.getFiles().getFile(0).getFileExt().equals("")){ rename = "jinli_" + dateString +"."+picdoc.getFiles().getFile(0).getFileExt(); picdoc.getFiles().getFile(0).saveAs("productupload/"+rename,picdoc.SAVE_VIRTUAL); }String sql = "insert into photo values(?,?,?,?)";PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(4,rename);// 关于visualSVN配置的问题 高手帮帮忙,MyEclipse里面tomcat 7.x启动不了 displaytag 导出问题 高分求救,(JasperReport)客户端打印,一定要修改java.security和java.policy? 高分请问:java读取xml的问题 我有一台静态IP的机子,想作为Internet服务器用,能否实现? fckeditor无法上传图片 sturts2中jsp中,传值的一些问题, 表单数据返回中文乱码问题??? 数据库连接错误!高手帮看下 JFreeChart如何做柱状图 jsp:plugin问题
<%@page import="java.sql.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page contentType="text/html; charset=gb2312" %>
<html>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection d = DriverManager.getConnection("jdbc:mysql://localhost:3306/learnjsp?user=chen&password=8811098");
Statement stmt=d.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String ph_CateID=request.getParameter("ph_CateID");
String ph_Name=request.getParameter("ph_Name");
String message=request.getParameter("message");
String saveDirectory ="E:/Jbuilder/workspace/123/WebContent/upload";
//每个文件最大5m,最多3个文件,所以...
int maxPostSize =3 * 5 * 1024 * 1024 ;
//response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传
MultipartRequest multi =
new MultipartRequest(request, saveDirectory, maxPostSize,
"gb2312");//输出反馈信息
Enumeration files = multi.getFileNames();
while (files.hasMoreElements()) {
System.err.println("ccc");
String name = (String)files.nextElement();
File f = multi.getFile(name);
if(f!=null){
String fileName = multi.getFilesystemName(name);
String lastFileName= fileName;
stmt.executeUpdate("INSERT INTO photo(ph_CateID,ph_Name,message,piccontent) VALUES('"+ph_CateID+"','"+fileName+"','"+message+"','"+f+"')");
out.println("上传的文件:"+f);
out.println("<hr>"); }
}%>
</html>
用request.getSession().getServletContext().getRealPath()可以获得WEB服务的绝对路径,就类似你项目里的
E:/Jbuilder/workspace/123/WebContent/, (JBUDER很久不用了,有点忘记,不过应该是这个,呵呵)
到这里你就可以直接指定图片路径了.而数据库里只有图片的文件名,到SERVLET或者JSP或者ACTION里去拼接.具体方法这样(HOHO,正好无聊,帮你写写)String webPath = request.getSession().getServletContext().getRealPath();(这里最好你自己用IDE的提示提出来,我手写的,万一错了会害死你,哈哈)String filePath = webPath+"/*upload(?这个是你图片在WEB上的相对路径)*/"+fileName;//fileName从数据库里扯出来哦,页面上就扔filePath去显示吧,OY~~~~~~插库,你的String saveDirectory ="E:/Jbuilder/workspace/123/WebContent/upload"; 这一大串就干掉了,丢文件名就好了.恩恩,搞定.
SmartUpload picdoc=new SmartUpload(); picdoc.initialize(pageContext); //初始化 //picdoc.service(request,response); //接收请求 picdoc.upload(); //上传
//对你的图片重命名 productupload为你存入图片的地方
String rename = null;
if(!picdoc.getFiles().getFile(0).getFileExt().equals("")){
rename = "jinli_" + dateString +"."+picdoc.getFiles().getFile(0).getFileExt();
picdoc.getFiles().getFile(0).saveAs("productupload/"+rename,picdoc.SAVE_VIRTUAL);
}
String sql = "insert into photo values(?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(4,rename);
//