<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jspSmartUpload/upload.jsp"> <INPUT TYPE="FILE" NAME="MYFILE"> <INPUT TYPE="SUBMIT"> </FORM> |
<!--
Dateiname: upload.html
Autor: Yu Yiqi vom Zongheng Software Production Center ([email protected])
->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<Kopf>
<title>Datei hochladen</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<Körper>
<p> </p>
<p align="center">Dateiauswahl hochladen</p>
<FORM METHOD="POST" ACTION="jsp/do_upload.jsp"
ENCTYPE="multipart/form-data">
<input type="hidden" name="TEST" value="good">
<table width="75%" border="1" align="center">
<tr>
<td><div align="center">1.
<input type="FILE" name="FILE1" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">2.
<input type="FILE" name="FILE2" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">3.
<input type="FILE" name="FILE3" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">4.
<input type="FILE" name="FILE4" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Hochladen!">
</div></td>
</tr>
</table>
</FORM>
</body>
</html> |
<%-- Dateiname: do_upload.jsp Autor: Yu Yiqi vom Zongheng Software Production Center ([email protected]) --%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" %> <html> <Kopf> <title>Seite zur Verarbeitung des Datei-Uploads</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <Körper> <% // Ein neues SmartUpload-Objekt erstellen SmartUpload su = new SmartUpload(); //Initialisierung hochladen su.initialize(pageContext); // Upload-Limits festlegen // 1. Begrenzen Sie die maximale Länge jeder hochgeladenen Datei. // su.setMaxFileSize(10000); // 2. Begrenzen Sie die Länge der gesamten hochgeladenen Daten. // su.setTotalMaxFileSize(20000); // 3. Legen Sie fest, welche Dateien hochgeladen werden dürfen (eingeschränkt durch die Erweiterung). Nur DOC- und TXT-Dateien sind zulässig. // su.setAllowedFilesList("doc,txt"); // 4. Legen Sie Dateien fest, deren Hochladen verboten ist (durch Erweiterung eingeschränkt), und verbieten Sie das Hochladen von Dateien mit exe, bat, Dateien mit JSP-, HTM-, HTML-Erweiterungen und Dateien ohne Erweiterungen. // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); //Dateien hochladen su.upload(); // Alle hochgeladenen Dateien im angegebenen Verzeichnis speichern int count = su.save("/upload"); out.println(count+"Dateien erfolgreich hochgeladen!<br>"); //Verwenden Sie das Request-Objekt, um den Wert des Parameters abzurufen out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // Hochgeladene Dateiinformationen einzeln extrahieren und gleichzeitig Dateien speichern. for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // Fortfahren, wenn die Datei nicht existiert if (file.isMissing()) continue; // Aktuelle Dateiinformationen anzeigen out.println("<TABLE BORDER=1>"); out.println("<TR><TD>Formularname (FieldName)</TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>Dateilänge (Größe)</TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>FileName (FileName)</TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>Dateierweiterung (FileExt)</TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>Vollständiger Name der Datei (FilePathName)</TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // Datei speichern als // file.saveAs("/upload/" + myFile.getFileName()); // In einem Verzeichnis mit dem Stammverzeichnis der WEB-Anwendung als Dateistammverzeichnis speichern // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // In dem Verzeichnis speichern, in dem das Stammverzeichnis des Betriebssystems das Stammverzeichnis der Datei ist // file.saveAs("c:\temp\" + myFile.getFileName(), su.SAVE_PHYSICAL); } %> </body> </html> |
<!-- Dateiname: download.html Autor: Yu Yiqi vom Zongheng Software Production Center ([email protected]) -> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <Kopf> <title>Herunterladen</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <Körper> <a href="jsp/do_download.jsp">Zum Herunterladen klicken</a> </body> </html> |
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%
// Ein neues SmartUpload-Objekt erstellen SmartUpload su = new SmartUpload();
//Initialisieren su.initialize(pageContext);
//Setzen Sie contentDisposition auf null, um zu verhindern, dass der Browser die Datei automatisch öffnet.
// Stellen Sie sicher, dass die Datei heruntergeladen wird, nachdem Sie auf den Link geklickt haben. Wenn es nicht festgelegt ist und die Erweiterung der heruntergeladenen Datei //doc lautet, öffnet der Browser sie automatisch mit Word. Wenn die Erweiterung pdf ist,
//Der Browser wird mit Acrobat geöffnet.
su.setContentDisposition(null);
// Datei herunterladen su.downloadFile("/upload/How to Earn My First Pot of Gold.doc");
%> |
public void downloadFile(String s, String s1, String s2, int i)
löst ServletException, IOException, SmartUploadException aus
{
if(s==null)
throw new IllegalArgumentException("File '" + s +
"' nicht gefunden (1040).");
if(s.equals(""))
throw new IllegalArgumentException("File '" + s +
"' nicht gefunden (1040).");
if(!isVirtual(s) && m_denyPhysicalPath)
throw new SecurityException("Physischer Pfad ist
abgelehnt (1035).");
if(isVirtual(s))
s = m_application.getRealPath(s);
java.io.File file = neue java.io.File(s);
FileInputStream fileinputstream = new FileInputStream(file);
long l = file.length();
boolesches Flag = false;
int k = 0;
Byte abyte0[] = neues Byte[i];
if(s1==null)
m_response.setContentType("application/x-msdownload");
anders
if(s1.length() == 0)
m_response.setContentType("application/x-msdownload");
anders
m_response.setContentType(s1);
m_response.setContentLength((int)l);
m_contentDisposition = m_contentDisposition != null ?
m_contentDisposition: „attachment;“;
if(s2 == null)
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" +
toUtf8String(getFileName(s)));
anders
if(s2.length() == 0)
m_response.setHeader("Content-Disposition",
m_contentDisposition);
anders
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" + toUtf8String(s2));
while((long)k < l)
{
int j = fileinputstream.read(abyte0, 0, i);
k += j;
m_response.getOutputStream().write(abyte0, 0, j);
}
fileinputstream.close();
}
/**
* Konvertieren Sie die chinesischen Zeichen im Dateinamen in eine UTF8-codierte Zeichenfolge, damit der gespeicherte Dateiname beim Herunterladen korrekt angezeigt werden kann.
* Zongheng Software Production Center Yu Yiqi 2003.08.01
* @param s ursprünglicher Dateiname* @return neu codierter Dateiname*/
öffentlicher statischer String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} anders {
byte[] b;
versuchen {
b = Character.toString(c).getBytes("utf-8");
} Catch (Ausnahme ex) {
System.out.println(ex);
b = neues Byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
wenn (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
} |