2017-04-13 73 views
1

我已將文件夾上傳到服務器文件夾,所以現在我想將文件路徑和文件名存儲到Mysql數據庫中,並以樹結構化的方式將數據庫中存儲的文件顯示到前端。如何使用jsp servlet代碼將文件路徑和文件名存儲到數據庫(mysql)中?

這裏是代碼請幫助

page.jsp 
 

 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<%@ page language="java" %> 
 
<%@page import="java.io.*,java.net.*"%> 
 
<HTML> 
 
<FORM ENCTYPE="multipart/form-data" ACTION="uploadandstore.jsp" METHOD=POST> 
 
<center> 
 
<table border="0" bgcolor=#ccFDDEE> 
 
<tr> 
 
<center><td colspan="2" align="center"><B>UPLOAD THE FILE</B><center></td> 
 
</tr> 
 
<br><br><br> 
 
<tr><td colspan="" align="center"> </td></tr> 
 
<tr><td><b>Choose the file</b></td> 
 
<td><INPUT NAME="file" TYPE="file"></td> 
 
</tr> 
 
<tr><td colspan="2" align="center"> </td></tr> 
 
<tr><td colspan="2" align="center"><input type="submit" value="Submit"> </td></tr> 
 

 

 
<table> 
 
</center> 
 
</FORM> 
 
</HTML>

uploadandstore.jsp 
 

 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<%@page import="java.io.*, java.sql.*"%> 
 
<% 
 

 
String saveFile=""; 
 
String contentType = request.getContentType(); 
 
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) { 
 
DataInputStream in = new DataInputStream(request.getInputStream()); 
 
int formDataLength = request.getContentLength(); 
 
byte dataBytes[] = new byte[formDataLength]; 
 
int byteRead = 0; 
 
int totalBytesRead = 0; 
 
while (totalBytesRead < formDataLength) { 
 
byteRead = in.read(dataBytes, totalBytesRead,formDataLength); 
 
totalBytesRead += byteRead; 
 
} 
 
String file = new String(dataBytes); 
 
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()); 
 
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; 
 
int startPos = ((file.substring(0, pos)).getBytes()).length; 
 
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length; 
 
saveFile="C:/UploadedFiles/"+saveFile; 
 
File f = new File(saveFile); 
 
FileOutputStream fileOut = new FileOutputStream(f); 
 
fileOut.write(dataBytes, startPos, (endPos - startPos)); 
 
fileOut.flush(); 
 
fileOut.close(); 
 
%> 
 
    
 
    <% 
 
    
 
    } 
 
%> 
 
    <a href="viewFiles.jsp">View Files</a>

viewFiles.jsp 
 

 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<%@ page import="java.io.*"%> 
 
<html> 
 
<table> 
 

 
<% 
 
File f = new File("C:/UploadedFiles/"); 
 
     File[] files = f.listFiles(); 
 
     for(int i=0;i<files.length;i++){ 
 
      String name=files[i].getName(); 
 
      String path=files[i].getPath(); 
 
      
 
%> 
 
<tr><td><%=name%></td><td><a href="download.jsp?f=<%=path%>">Download</a></td></tr> 
 
    <% 
 
     } 
 
%> 
 
</table> 
 
</html>

download.jsp 
 

 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<%@page import="java.io.*,java.net.*"%> 
 

 
<%! 
 
public static String getMimeType(String fileUrl) 
 
    throws java.io.IOException, MalformedURLException 
 
    { 
 
    String type = null; 
 
    URL u = new URL(fileUrl); 
 
    URLConnection uc = null; 
 
    uc = u.openConnection(); 
 
    type = uc.getContentType(); 
 
    return type; 
 
    } 
 

 
%> 
 
<% 
 
    String file=request.getParameter("f"); 
 
    File f = new File (file); 
 
    String filename=f.getName(); 
 
    String type=getMimeType("file:"+file); 
 

 
    response.setContentType (type); 
 
    response.setHeader ("Content-Disposition", "attachment; filename=\""+filename+"\""); 
 

 
    String name = f.getName().substring(f.getName().lastIndexOf("/") ,f.getName().length()); 
 
    InputStream in = new FileInputStream(f); 
 
     ServletOutputStream outs = response.getOutputStream(); 
 

 
     int bit = 256; 
 
     int i = 0; 
 
      try { 
 
        while ((bit) >= 0) { 
 
         bit = in.read(); 
 
         outs.write(bit); 
 
        } 
 
         } catch (IOException ioe) { 
 
         ioe.printStackTrace(System.out); 
 
        } 
 
         outs.flush(); 
 
        outs.close(); 
 
        in.close(); 
 

 
     %>

+0

你是什麼意思? 如果您通過請求獲得文件,則無法使用! –

+0

請問您可以編輯我的代碼或提供任何代碼。那麼你 – Krishna

+0

我不知道你是什麼意思!所以我怎麼能給你一個建議? –

回答

0

好吧,基於註釋

String filePath=f.getAbsolutePath(); // this will get the file path 
try(Connection conn=getDBConnection();// here it will open a DB connection 
PreparedStatement peparedState=conn.preparStatement("INSERT INTO PATHS SET path=?")// Query 
peparedState.setString(1,filePath); // setting the variable corresponding to '?' 
preparedState.executeUpdate()); // executeQuery 
相關問題