2017-02-20 2 views
0

У меня есть две страницы JSP Form.jsp и UploadFile.jspКак я могу получить один Jsp изображение страницы и текст на другой JSP

Form.jsp

Я хочу, чтобы отправить изображение (fb.png) и имена, как Fname и LName значения UploadFile.jsp страница

до этого я пытался отправить изображение я добиться успеха в том, что после того, как я попытался получить Fname и через текстовое поле его с извлечением нулевого значения

Fo rm.jsp

<%@ page language="java" %> 
<HTML> 
<FORM ENCTYPE="multipart/form-data" ACTION="UploadFile.jsp" METHOD=POST> 
<center> 
<table border="0" bgcolor=#ccFDDEE> 


<tr> 
<center><td colspan="2" align="center"><B>UPLOAD THE FILE</B><center></td> 


<tr><td colspan="2" align="center"> </td></tr> 
<tr><td><b>Choose the file To Upload:</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="text" name="fn"></input><br> 
<input type="text" name="ln"></input><br> 
<input type="submit" value="Send File"> </td></tr> 
</table> 
</center> 

</FORM> 
</HTML> 

UploadFile.jsp

На этой странице я коплю данное изображение в папку проекта и получить путь к изображению. С помощью этого кода я могу получить изображение, но я не могу получить текст .. Я хочу, чтобы получить как изображение и текст

UploadFile.jsp

<%@ page import="java.io.*,java.sql.*,java.util.zip.*" %> 
<%/* String firstname=request.getParameter("fname"); 
String lastname=request.getParameter("lname"); 
System.out.println("This is fname:"+firstname); 
System.out.println("This is lname:"+lastname); */ 
String fname=request.getParameter("fn"); 
out.println("Welcome:"+fname); 
String lname=request.getParameter("ln"); 
System.out.println("The value of lname is:"+lname); 
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; 
System.out.println("I am while loop:"+totalBytesRead); 
} 
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("D:\\REAL\\RoseIndia\\images\\"+saveFile); 
FileOutputStream fileOut = new FileOutputStream(ff); 
System.out.println("THE FILE OUT PATH ARE:"+fileOut); 
System.out.println("THE FF PATH ARE:"+ff.getPath()); 
fileOut.write(dataBytes, startPos, (endPos - startPos)); 
System.out.println("This is the SAVEFILE:::"+saveFile); 
fileOut.flush(); 
System.out.println("111111111111111111111"); 
fileOut.close(); 
System.out.println("2222222222222222222"); 


%><% String name=request.getParameter("FNAME"); out.print("welcome "+name); %> 

System.out.println("The test value are::::"+name); 
%><br><table border="2"><tr><td><b>You have successfully upload the file:</b> 


<%out.println(ff.getPath());%></td></tr></table> 
<FORM ENCTYPE="multipart/form-data" ACTION="DisplayImage" METHOD=POST> 
<input type="submit" value="Send File"> 
</form> 

<% 
System.out.println("333333333333333"); 
Connection connection = null; 
String connectionURL = "jdbc:mysql://localhost:3306/realtime"; 
PreparedStatement ps = null; 
try{ 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
connection = DriverManager.getConnection(connectionURL, "root", "root"); 


ps = connection.prepareStatement("insert into file(image) values(?)"); 
ps.setString(1, ff.getPath()); 
/* ps.setString(2, firstname); 
ps.setString(3, lastname); */ 
int s = ps.executeUpdate(); 
if(s>0){ 
System.out.println("Uploaded successfully !"); 

} 
else{ 
System.out.println("Error!"); 
} 
} 
catch(Exception e){ 
    e.printStackTrace(); 
} 
} 
%> 

Заранее спасибо

+0

Просто дружеский совет - вы должны действительно прочитать что-то о [MVC] (https: //en.wikipedia. org/wiki/Model% E2% 80% 93view% E2% 80% 93controller), как [избегать скриптов] (http://stackoverflow.com/questions/2188706/how-to-avoid-using-scriptlets-in- my-jsp-page) и, вероятно, подумайте о том, чтобы сделать «UploadFile.jsp» сервлетом –

ответ

0

request.getParameter() и связанные с ним методы не работают с многочастными запросами и всегда будут возвращать значение null при работе с данными мультифайловой формы.

Если вы хотите использовать request.getParameter(), вы можете использовать Commons FileUpload.

Попробуйте.

Edit:

Пробу с помощью Apache Commons FileUpload

FileItemFactory factory = new DiskFileItemFactory(); 

    // Set factory constraints 
    // factory.setSizeThreshold(yourMaxMemorySize); 
    // factory.setRepository(yourTempDirectory); 

// Create a new file upload handler 
ServletFileUpload upload = new ServletFileUpload(factory); 
// upload.setSizeMax(yourMaxRequestSize); 

// Parse the request 
List<FileItem> uploadItems = upload.parseRequest(request); 

for(FileItem uploadItem : uploadItems){ 
    if(uploadItem.isFormField()){ 
     String fieldName = uploadItem.getFieldName(); 
     String value = uploadItem.getString(); 
} 

}

Смежные вопросы