szervlet/jsp és file feltöltés hogyan?
Sziasztok,
Az érdekelne hogy hogy müködik a webes file feltöltés a jsp/szervletek esetében
- Milyen konfigurációs beállitások vannak? ( max fileméret , max feltöltési idő stb)
- Mit/hol/hogyan kell beállitanom?
- Ezek a beálliástások webszerverhez kötöttek vagy attól függetlenek? (pl a web.xml-ben vagy valamilyen más egyéb konfigurációs file-ban kell beállitanom valamit)
Apache tomcat-et használok , ha ez segit valamit
Azt már tudom, hogy php-ben hogy müködnek ezek a dolgok, és ahogy eddig utána néztem, google azt mutatja, hogy java-ban eléggé másképp müködnek ezek a dolgok (sajnos vagy nem sajnos)
Szóval jól jönne némi segitség/info hogy mit/hol/hogyan :)
OP
■ Az érdekelne hogy hogy müködik a webes file feltöltés a jsp/szervletek esetében
- Milyen konfigurációs beállitások vannak? ( max fileméret , max feltöltési idő stb)
- Mit/hol/hogyan kell beállitanom?
- Ezek a beálliástások webszerverhez kötöttek vagy attól függetlenek? (pl a web.xml-ben vagy valamilyen más egyéb konfigurációs file-ban kell beállitanom valamit)
Apache tomcat-et használok , ha ez segit valamit
Azt már tudom, hogy php-ben hogy müködnek ezek a dolgok, és ahogy eddig utána néztem, google azt mutatja, hogy java-ban eléggé másképp müködnek ezek a dolgok (sajnos vagy nem sajnos)
Szóval jól jönne némi segitség/info hogy mit/hol/hogyan :)
OP
egész pontosan tomcat 6.0-át
( nem tudom, hogy mennyire számit ez/mekkorák a külömbségek az egyes tomcat verziók között)
Remélem érthető lesz
import java.io.ByteArrayOutputStream;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.util.*;
//import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public final class TestUpload extends HttpServlet {
private DataSource _poolWF = null;
//~--- methods ------------------------------------------------------------
/**
* Szervlet példányonként egyszer elvégzendő feladatok.
* @throws ServletException Ha hiba van a létrehozásakor ezt a kivételt dobja.
*/
@Override
public void init() throws ServletException {
InitialContext initCtx = null;
try {
initCtx = new InitialContext();
_poolWF =
(DataSource) initCtx.lookup("java:comp/env/jdbc/workflow");
} catch (Exception e) {
throw new ServletException("no datasource found " + e);
}
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
try {
// PrintWriter out = response.getWriter();
// response.setContentType("text/html");
// out.write("<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>File Upload Example</title></head>");
// out.write("<body><h1>Data Received at the Server</h1><hr /><p>");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
List fileItemsList = servletFileUpload.parseRequest(request);
FileItem fileItem = null;
Iterator it = fileItemsList.iterator();
while (it.hasNext()) {
FileItem fileItemTemp = (FileItem) it.next();
if (fileItemTemp.isFormField()) {
} else {
fileItem = fileItemTemp;
}
}
if (fileItem != null) {
String fileName = fileItem.getName();
// out.write("<b>Uploaded File Info:</b><br/>Content type: ");
// out.print(fileItem.getContentType());
// out.write("<br/>Field name: ");
// out.print(fileItem.getFieldName());
// out.write("<br/>File name: ");
// out.print(fileName);
// out.write("<br/>File size: ");
// out.print(fileItem.getSize());
// out.write("<br/><br/>");
Connection con = _poolWF.getConnection();
PreparedStatement pstm = con.prepareStatement("INSERT INTO pdfs (file_name, bin_data, content_type) VALUES (?, ?, ?)");
pstm.setString(1, fileName);
pstm.setBinaryStream(2, fileItem.getInputStream(), (int) fileItem.getSize());
pstm.setString(3, fileItem.getContentType());
pstm.executeUpdate();
/* Save the uploaded file if its size is greater than 0. */
// if (fileItem.getSize() > 0) {
// fileName = FilenameUtils.getName(fileName);
//
// String dirName = getServletContext().getRealPath("/file_uploads/");
//
// File saveTo = new File(dirName + "/" + fileName);
// try {
// fileItem.write(saveTo);
// out.write("<b>The uploaded file has been saved successfully.</b>");
// } catch (Exception e) {
//
// out.write("<b>An error occurred when we tried to save the uploaded file.</b>");
// }
// }
pstm = con.prepareStatement("SELECT max(id) FROM pdfs");
ResultSet rs = pstm.executeQuery();
if (rs.next()) {
int i = rs.getInt(1);
pstm = con.prepareStatement("SELECT * FROM pdfs WHERE id=?");
pstm.setInt(1, i);
rs = pstm.executeQuery();
if (rs.next()) {
byte[] fileContent = rs.getBytes("bin_data");
String cType = rs.getString("content_type");
ByteArrayOutputStream pdf = null;
final ServletOutputStream sos = response.getOutputStream();
try {
response.setHeader("Content-type", cType);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
pdf = new ByteArrayOutputStream(fileContent.length);
pdf.write(fileContent, 0, fileContent.length);
response.setContentLength(pdf.size());
pdf.writeTo(sos);
sos.flush();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (pdf != null) {
pdf.reset();
}
sos.close();
pdf.close();
}
}
}
con.close();
}
}
// out.write("</p></body></html>");
} catch (Throwable t) {
t.printStackTrace();
}
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
doGet(request, response);
}
}
Valamint a Tomcat Server.xml-jébe is úgy emlékszem lehet állítgatni, hogy mekkora a max. mérete a feltöltésnek.