2017-05-20 3 views
0

Also habe ich eine Datenbank für eine imaginäre Flugfirma eingerichtet. Ich sollte eine JSP-Seite haben, auf der Administratoren Daten wie Flugnummer, Flugmodell, Kapazität, Sitzplatzanordnung usw. in eine Datenbank eingeben können. Ich konnte dem Administrator erlauben, Daten wie Flugmodell und -nummer in die Datenbank einzugeben. Ich weiß jedoch nicht, wie ich Admins ein Bild des Sitzplatz-Layouts in die Datenbank einfügen lassen kann. Genauer gesagt muss ich die Admins ihre Computer durchsuchen lassen und eine Bilddatei von ihrem Computer in meine Datenbank hochladen und dort speichern, so dass, wann immer der Benutzer nach einem bestimmten Flugzeugmodus sucht, wie Boeing-747, das Bild des Sitzes Layout für die Boeing-747 wird zurückgegeben. Irgendwelche Ideen, wie ich das machen kann? Jede und jede Hilfe würde geschätzt werden.Den Benutzern erlauben, Bilder in die Datenbank einzufügen

Ich habe versucht, auf Google nach einer Lösung zu suchen, aber ich habe keine Ahnung, wie ich die Codes, die ich gefunden habe, in meine Codes aufnehmen kann. Falls jemand fragen, was habe ich schon getan, ist es das, was ich bisher habe:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<%@page import="java.sql.*"%> 
<%@page import="java.io.*" %> 
<% 
String Model = request.getParameter("Model"); 
String Flight_number = request.getParameter("Flight_number"); 
Statement theStatement = null; 
String capacity = request.getParameter("Capacity"); 
boolean x=true; 
try 
{ 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
String url="jdbc:mysql://localhost/testing"; 
String username="root"; 
String password="password"; 
Connection conn=DriverManager.getConnection(url,username,password); 
theStatement =(Statement)conn.createStatement(); 
theStatement.executeUpdate("INSERT INTO testing.aircraft_data (aircraft_model, flight_no , passenger_capacity)"+ "VALUES ('"+Model+"' , '"+Flight_number+"' , '"+capacity+"')"); 
//Process Result 

theStatement.close(); 
conn.close(); 
} 

catch(Exception e){ 
    out.println("Exception occured! "+e.getMessage()+" "+e.getStackTrace()); 
    x=false; 
    out.println(e); 
    System.out.println(e); 
    response.sendRedirect("Homescreen_Admin.jsp?correct="+x+e); 
} 

//response.sendRedirect("Homescreen_Admin.jsp?correct="+x); 

%> 

</body> 
</html> 
+0

bei http://stackoverflow.com Werfen Sie einen Blick/questions/36408805/how-to-receive-a-file-type-parameter-from-html-jsp-in-a-servlet – Juan

+0

@Juan Danke. Ich habe mir die Frage angeschaut und die Lösung lautete, ein Servlet zu schreiben. Bedeutet das, dass ich ein Servlet schreiben muss und es irgendwie in das JSP einbinden muss, damit ich das Bild vom Benutzer bekommen kann? – Noob

+0

Wenn ich Ihre Aufgabe ausführen würde, würde ich ein Servlet verwenden, um die Eingabe aus dem Formular zu erhalten, und dann vom Servlet die JSP-Seite versenden, um die Ausgabe anzuzeigen. Um dies zu tun, schauen Sie in den request.getRequestDispatcher des Servlets ("/ WEB-INF/index.jsp"). Forward (request, response); Über die Speicherung des Bildes hat @Nicolas Azrak recht. – Juan

Antwort

0

Als gute Praxis sollen Sie niemals ein Bild in einer Datenbank speichern. Datenbanken sind nicht für diese Art der Nutzung optimiert, es wird alles verlangsamen.

Eine bessere Idee ist, Ihr Bild woanders zu speichern (speichern Sie das Server-Dateisystem, Amazon S3, Google Cloud Storage, etc ...) und speichern Sie den Link zu diesem stattdessen als Zeichenfolge.

Wenn Sie absolut sicher sind, dass Sie das Bild speichern möchten, müssen Sie einen BLOB-Spaltentyp in mysql verwenden und dort die Bildbytes speichern.

Hinweis: Wenn Ihr Problem ist, wie das Bild aus dem html auf den Server zu laden, was Sie suchen, ist ein HTML-Formular mit multipart/form-data und einer Datei laden https://www.w3schools.com/tags/att_input_accept.asp

+0

Danke für die Antwort. Ich verstehe nicht, was Sie damit gemeint haben, indem Sie ein Bild vom html auf den Server hochladen. Was ich im Sinn hatte, war, Benutzern zu erlauben, direkt ein Bild von ihrem Computer, d. H. C: Laufwerk, in die Datenbank hochzuladen, damit sie gespeichert wird. Ich würde gerne wissen, ob es möglich ist, und wenn ja, wie? Jede Hilfe wäre willkommen. – Noob

+0

Eigentlich bezweifle ich, dass ein Sitzplan viel mehr als 100k sein wird, also wäre es wahrscheinlich in Ordnung (wenn auch ein wenig ungewöhnlich), es direkt in der Datenbank zu speichern. – Strawberry

+0

Aus dem Code, den Sie freigegeben haben, scheint es eine Webanwendung zu sein, die html anbietet. Um also ein Bild hochladen zu können, sollten Sie ein Formular erstellen, in das Sie eine Dateieingabe einfügen (siehe http://html.com/ input-type-file/das ist die Datei, die Sie immer auf Seiten sehen, um eine Datei hochzuladen). Dann wird dieses Formular mit dem ausgewählten Bild an Ihren http-Server gesendet, wo Sie das Bild erhalten. Dann können Sie mit dem Bild machen, was Sie wollen. Ihre –

Verwandte Themen