2017-04-17 6 views
0

ファイルをCローカルドライブにアップロードしようとしましたが、そのファイル名とファイルパスをMySqlデータベースに挿入する必要があります。下のコードはストアファイル用にc:localフォルダには正常に作成されましたが、ファイルパスとファイル名はデータベースに格納されません。私のコードを修正してください。ローカルサーバーにファイルをアップロードしました。どのようにjspを使用してmysqlデータベースにファイルのパスとファイル名を保存するには?

<%@ page import="java.io.*,java.sql.*,java.util.zip.*" %> 
 
<% 
 
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; 
 
File ff = new File("C:/UploadedFiles/"+saveFile); 
 
FileOutputStream fileOut = new FileOutputStream(ff); 
 
fileOut.write(dataBytes, startPos, (endPos - startPos)); 
 
fileOut.flush(); 
 
fileOut.close(); 
 
%> 
 
<br> 
 
<%out.println(saveFile);%> 
 
<% 
 
Connection connection = null; 
 
String connectionURL = "jdbc:mysql://localhost:3306/test"; 
 
PreparedStatement psmnt = null; 
 
try{ 
 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
 
connection = DriverManager.getConnection(connectionURL, "root", "12345"); 
 
psmnt = connection.prepareStatement("insert into file_upload(file_path,file_name,category,tags) values(?,?,?,?)"); 
 

 
psmnt.setString(1, ff.getPath()); 
 
psmnt.setString(2, ff.getName()); 
 

 
int s = psmnt.executeUpdate(); 
 
if(s>0){ 
 
System.out.println("Uploaded successfully !"); 
 
} 
 
else{ 
 
System.out.println("Error!"); 
 
} 
 
} 
 
catch(Exception e){ 
 
    e.printStackTrace(); 
 
} 
 
} 
 
%>

+0

を私はあなたが任意の例外をカテゴリやタグ – JYoThI

+0

のための不足しているバインド・パラメータを取得していると思いますか?プリペイド・ステートメントのカテゴリーとタグのパラメーターもバインドしてください。 –

+0

ビジネス・ロジック用のサーブレットを使用してください。これはJSPで好きではありません –

答えて

0

カテゴリーとタグがデータベースに挿入される任意の値を保持していません。変数へのそれらの必要はありません。
は、以下のコードに従ってください:

psmnt = connection.prepareStatement("insert into file_upload(file_path,file_name) values(?,?)"); 
関連する問題