MYSQL

2013-03-27 5 views
0

나는이 작업을 수행하는 몇 가지 문제가있다 그리고 나는 약간의 도움을 사용할 수에 JSP/서블릿 파일 시스템에 사진을 업로드 :MYSQL

임 사용하여 MYSQL DB 내 파일 시스템에서 사진을 업로드하려고 JSP/Java 서블릿

이미지 폴더에 파일이 있습니다. 나는 파일을 읽고, 바이트로 변환하고, outputStream을 얻으려고한다. 그러나 나는 약간의 행운을 보냈다. (그리고 내 시도는 열차 잔해이기 때문에 코드를 게시하지 않았다.) 파일이 outputStream에 들어간 후에, 나는 blob이?로 참조 된 삽입으로서 SQL 문을 형성하는 법을 알고있다. 매개 변수, 그러나 나는 이것을 멀리 얻을 수 없다.

도움을 주시면 감사하겠습니다.

+0

당신은 서버에 업로드, 또는 클라이언트로 다운로드? 정말로 명확하지 않습니다. 어느 쪽이든 수십 가지 예가 있습니다. 특정 문제에 대해 질문하십시오. –

+0

수십 가지 예가 있다면 게시 할 수 있습니까? 나는 당신이 수십개를 발견 한 곳을 찾을 수 없었습니다. – Deprecated

+0

그게 가능한지 모르겠다. 데이터베이스에 Java + 저장소 이미지 만 검색하면된다. (또는 당신의 반대편이 그것을 다시 스트리밍하려고합니다.) 쉬운 검색. –

답변

0

단계를 수행해야합니다. 1. 기본보기에서 input type = "file"태그를 사용하십시오. 2.using이 폴더 위치에서 파일 이름의 파일 4.identify 서버의 폴더 에서 파일 3.keep 업로드 된 파일 의 모든 바이트를 읽고이 사용 방울 5.dont에 대한 MySQL의 DB 에 보관 DiskFileItemFactory 직접 로컬 시스템에서 파일을 선택하고 DB에 저장, 모든 먼저 DAO 작업을 서버에 업로드 한 후 수행해야

0

공용 클래스 UploadFilesServlet를 확장 HttpServlet을 {

public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException 
{ 
res.setContentType("text/html"); 
PrintWriter pw=res.getWriter(); 


try 
{ 
//step1 
DiskFileItemFactory df=new DiskFileItemFactory(); 
//step2 
df.setSizeThreshold(10000); //setting buffersize  
String temp=getServletContext().getRealPath("/WEB-INF/temp"); 
df.setRepository(new File(temp)); //if buffer crossed comes into the temp 
//step3 
ServletFileUpload sf=new ServletFileUpload(df); 
//step4 
List<FileItem> items=(List<FileItem>)sf.parseRequest(req); 
//step5 
for(FileItem item: items) 
{ 
if(item.isFormField()) 
{ 
//this item is a simple text field 
String name=item.getFieldName(); 
String value=item.getString(); 
pw.println(name+"="+value+"<br/>"); 
} 
else 
{ 
//this is a file 
String name=item.getFieldName(); 
String fileName=item.getName(); 


if(fileName.lastIndexOf('\\')!=-1) 
fileName=fileName.substring(fileName.lastIndexOf('\\')+1); 

fileName=getServletContext().getRealPath("/WEB-INF/upload/"+fileName); 
item.write(new File(fileName)); 
pw.println("file:"+fileName+"saved</br>"); 
     BlobDemo.saveFile(fileName); 

}//else 
}//for 

}catch(Exception e){e.printStackTrace(); } 
    } 
    } 

이 코드 클라이언트의 파일을 WEB_INF/upload에 저장 der, 파일 업로드 후 같은 경로를 사용하여 파일을 찾고 스트림 및 BLOB 데이터 형식을 사용하여 파일 이름으로 파일을 저장합니다.

public class BlobDemo { 
private static String url = "jdbc:oracle:thin:@localhost:1521:xe"; 
private static String username = "kodejava"; 
private static String password = "welcome"; 

public static void saveFile(String fileName)throws Exception { 
    Connection conn = null; 
    FileInputStream fis = null; 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     conn = DriverManager.getConnection(url, username, password); 
     conn.setAutoCommit(false); 

     String sql = "INSERT INTO Files_Table(name, file) VALUES (?, ?)"; 
     PreparedStatement stmt = conn.prepareStatement(sql); 
     stmt.setString(1, fileName); 


     File file = new File("WEB-INF\\upload\\"+fileName); 
     fis = new FileInputStream(file); 
     stmt.setBinaryStream(2, fis, (int) file.length()); 
     stmt.execute(); 

     conn.commit(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     if (fis != null) { 
      fis.close(); 
     } 
     if (conn != null && !conn.isClosed()) { 
      conn.close(); 
     } 
    } 
} 

}