上传图片到数据库

njpingwen 2010-07-24 03:48:25
非常紧急!JSP上传图片到数据库中,action,jsp分开写
...全文
312 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter123shusheng 2010-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hosterzhu 的回复:]
为什么要上传到数据库中呢 ? 你把图片路径存上就OK了~~
[/Quote]
同意仁兄观点
njpingwen 2010-07-25
  • 打赏
  • 举报
回复
麻烦你可以给我发份吗?谢谢,邮箱:njpingwen@163.com 我用的是struts 1.3
得_失 2010-07-24
  • 打赏
  • 举报
回复
本人也想了解。。。

closewbq 2010-07-24
  • 打赏
  • 举报
回复
真无聊,要不我去写写吧!
closewbq 2010-07-24
  • 打赏
  • 举报
回复
你用的是struts2么?
ruyi310 2010-07-24
  • 打赏
  • 举报
回复
我也需要呢····
sun0322 2010-07-24
  • 打赏
  • 举报
回复
smartupload 百度
njpingwen 2010-07-24
  • 打赏
  • 举报
回复
肯定会的,感觉你的代码对我没什么帮助
sun0322 2010-07-24
  • 打赏
  • 举报
回复
0

问题如解决,请及时结贴!

Regards
sun0322 2010-07-24
  • 打赏
  • 举报
回复
<form method="post" action="Upload" ENCTYPE="multipart/form-data">




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
request.setCharacterEncoding("GBK");
response.setContentType("text/html; charset=GBK");
//设置上传文件的名字
String uploadPath ="D:\\JavaSource\\Task\\uploadDir\\"; // 上传文件的目录
String tempPath = "D:\\JavaSource\\Task"; // 临时文件目录
HttpSession ses=request.getSession();
try {
FileItemFactory factory = new DiskFileItemFactory();
// 设定缓存大小
((DiskFileItemFactory) factory).setSizeThreshold(4096);
// 设定暂存Directory
((DiskFileItemFactory) factory).setRepository(new File(tempPath));

ServletFileUpload upload = new ServletFileUpload(factory);
// 设置最大文件尺寸,这里是4MB
upload.setSizeMax(4194304);


// 得到所有的文件:
//解析用户请求的参数,取出文件上传信息
List fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
if(i.hasNext()) {
FileItem fileItem = (FileItem)i.next();
String fileName = fileItem.getName();
System.out.println(fileName);
//获取上传文件名,接下来处理一下,取出 文件名.扩展名 即可
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);

File uploadDir = new File(uploadPath,fileName); //构造上传文件存放位置
fileItem.write(uploadDir);

// 文件路径存入数据库
String sql_filename=uploadPath+fileName;
String taskid=(String)ses.getAttribute("add_taskid");
System.out.println("任务id:"+taskid);
FileUpload_down.add_file(sql_filename, taskid);
ses.removeAttribute("add_taskid");
// 获得文件名,这个文件名包括路径:

}
response.sendRedirect("welcom.jsp");
}
catch(Exception e) {
// 可以跳转出错页面
e.printStackTrace();
String error="上传失败!";
ses.setAttribute("error", error);
response.sendRedirect("error.jsp");
}

}

}


njpingwen 2010-07-24
  • 打赏
  • 举报
回复
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws java.lang.Exception {

XzqlActionForm xzqlActionForm = (XzqlActionForm)form;
Xzql xzql = new Xzql();
XzqlDao xzqlDao = new XzqlDao();
CharConvert charConvert = new CharConvert();

response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String filename = request.getParameter("outflowimg");

File file = new File(filename);
FileInputStream fis = new FileInputStream(file);
int len = (int)file.length();


xzqlDao.insertDocument(xzql,fis,len);

ArrayList arrayList = (ArrayList)xzqlDao.getXzqlList();
request.setAttribute("arrayList", arrayList);

return mapping.findForward("xzqlList");

}

String filename = request.getParameter("outflowimg");
从页面中获取的input 框的值,filename怎么为空啊
sun0322 2010-07-24
  • 打赏
  • 举报
回复

import java.io.*;
   import java.sql.*;
   public class PutImg {
   public void putimg() {
   try {
   Class.forName("org.gjt.mm.mysql.Driver").newInstance();
   String url = "JDBC:mysql://localhost/img?user=root&password=root&useUnicode=true&characterEncoding=gbk";
   Connection conn = DriverManager.getConnection(url);
   Statement stmt = conn.createStatement();
   //stmt.execute("insert into imgt (id) values (5)");
   stmt.close();
   PreparedStatement pstmt = null;
   String sql = "";
   File file = new File("c:/XXX");
   InputStream photoStream = new FileInputStream(file);
   //sql = " UPDATE imgt SET img = ? ";
   sql = "INSERT INTO imgtable (img) VALUES (?)";
   pstmt = conn.prepareStatement(sql);
   pstmt.setBinaryStream(1, photoStream, (int) file.length());
   pstmt.executeUpdate();
   pstmt.close();
   conn.close();
   } catch (Exception e) {
   e.printStackTrace();
   }
   }
   public static void main(String args[]){
   PutImg pi=new PutImg();
   pi.putimg();
   }
   }

njpingwen 2010-07-24
  • 打赏
  • 举报
回复
是要以流的形式存入数据库中,不能存路径的
-船长- 2010-07-24
  • 打赏
  • 举报
回复
为什么要上传到数据库中呢 ? 你把图片路径存上就OK了~~
njpingwen 2010-07-24
  • 打赏
  • 举报
回复
能否给个源代码,急,谢谢
ttgblh 2010-07-24
  • 打赏
  • 举报
回复
我也不懂,想请教
cfd406635982 2010-07-24
  • 打赏
  • 举报
回复
只需要获取到图片的字节流就行了吧
zwchunk 2010-07-24
  • 打赏
  • 举报
回复
上传到指定文件夹也可以。你考虑下
sun0322 2010-07-24
  • 打赏
  • 举报
回复
地 板
加载更多回复(2)

81,094

社区成员

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

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