直接通过图片的地址来把图片保存到物理位置或数据库里面,这样的做法可以吗?
我想通过io流来实现。大家有没有例子?
[解决办法]
你也只能通过IO流来实现。
例子就是读写二进制的文件流
[解决办法]
同上
找读写二进制的文件流即可,多动手试一下。
[解决办法]
恩,读流.....
[解决办法]
mport java.sql.*;public class TestInsert { public static void main(String[] args){ String connectionUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=mydata;user=sa;password="; Connection conn = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(connectionUrl); java.io.File file = new java.io.File("d:\\123.jpg"); java.io.FileInputStream fis = new java.io.FileInputStream(file); ResultSet result=null; String sql=null; PreparedStatement prestmt=null; sql="insert into test(tid,tdata) values(?,?)"; prestmt =conn.prepareStatement(sql); prestmt.setInt(1, 1); prestmt.setBinaryStream(2,fis,(int)file.length()); prestmt.executeUpdate(); System.out.println("success!"); conn.close(); } catch(Exception e){System.out.println("error: " + e);} }}
[解决办法]
存放到硬盘上:
jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'daoRuform.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="uploadDRFile.jsp" method="post" enctype="multipart/form-data"> <input name ="daoru" type="file"> <input name = "tijiao" type="submit" value="导入"> </form> </body></html>
[解决办法]
java代码,写在jsp里的
<%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java" %> <%@ page import="java.sql.*" %> <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <html> <head> <title> 导入测试 </title> </head> <body bgcolor="#ffffff"> <center> <% int MAX_SIZE = 102400 * 102400;//定义上载文件的最大字节 String rootPath; // 创建根路径的保存变量 DataInputStream in = null; //声明文件读入类 FileOutputStream fileOut = null; String remoteAddr = request.getRemoteAddr();//取得客户端的网络地址IP //out.print(remoteAddr); //out.print("<br>"); String serverName = request.getServerName(); //获得服务器的名字 out.print("你访问的网站是:"+serverName); out.print("<br>"); //取得jsp文件相对与根地址的地址 out.print("jsp文件相对与根地址的地址:"+request.getServletPath()); out.print("<br>"); String realPath = request.getRealPath(serverName); //取得互联网程序的绝对地址 //out.println(realPath); //out.print("<br>"); realPath = realPath.substring(0, realPath.lastIndexOf("\\")); //out.print(realPath); rootPath = realPath + "\\images\\temp\\"; //创建文件的保存目录upload //传到服务器上的路径是:<%out.println(rootPath); String contentType = request.getContentType(); //取得客户端上传的数据类型 //out.println("<p>客户端上传的数据类型 = " + contentType + "</p>"); try { if(contentType != null && contentType.indexOf("multipart/form-data") >= 0) { //读入上传的数据 in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength(); if (formDataLength > MAX_SIZE) { out.print("<P>上传的文件字节数不可以超过" + MAX_SIZE + "</p>"); return; } //保存上传文件的数据 byte dataBytes[] = new byte[formDataLength];//放在一个字符数组里 int byteRead = 0; int totalBytesRead = 0; //上传的数据保存在byte数组 while (totalBytesRead < formDataLength) { byteRead = in.read(dataBytes, totalBytesRead, formDataLength); totalBytesRead += byteRead; } //根据byte数组创建字符串 String file = new String(dataBytes); //out.println(file); //取得上传的数据的文件名 String saveFile = file .substring(file.indexOf("filename=\"") + 10); saveFile = saveFile.substring(0, saveFile.indexOf("\n")); saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\"")); int lastIndex = contentType.lastIndexOf("="); //取得数据的分隔字符串 String boundary = contentType.substring(lastIndex + 1, contentType.length()); //创建保存路径的文件名 String fileName = rootPath + saveFile; //out.print(fileName); int pos; pos = file.indexOf("filename=\""); pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; int boundaryLocation = file.indexOf(boundary, pos) - 4; //out.println(boundaryLocation); //取得文件数据的开始的位置 int startPos = ((file.substring(0, pos)).getBytes()).length; //out.println(startPos); //取得文件数据的结束的位置 int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length; //out.println(endPos); //检查上载文件是否存在 File checkFile = new File(fileName); if (saveFile.indexOf(".xls") < 0) { out.print("<p>你上传的文件不是文本文件!</p>"); } else { if (checkFile.exists()) { out.println("<p>" + saveFile + "文件已经存在.</p>"); } //检查上载文件的目录是否存在 File fileDir = new File(rootPath); if (!fileDir.exists()) { fileDir.mkdirs(); } //创建文件的写出类 fileOut = new FileOutputStream(fileName); //保存文件的数据 fileOut.write(dataBytes, startPos, (endPos - startPos)); fileOut.close(); out.println("<P>" + saveFile + "文件成功上载.</p>"); } /**else{ String content = request.getContentType(); out.println ("<p>上传的数据类型不是是multipart/form-data</p>"); }*/ } }catch(Exception e){e.printStackTrace();} %> </center> </body> </html>