Datei -Upload
multipart/form-data eingestellt werden<input type=“file”> muss hinzugefügt werden.<s: Form action = "testUpload" engType = "MultiPart/Form-Data"> <s: textfield name = "userername [0]" label = "user-1"> </s: textField> <s: Dateiname "fotos" fotos "fotos" fotos "fotos"> label = "fotos"> </s: file> <s: textField name = "userername [2]" label = "user-3"> </s: textField> <s: dateiname = "fotos" label = "foto"> </s: file> <s: sure value = "subieren"> </s: subieren> </s: Form> Form> Form> Form> Form> Form> Form> Form> Form> Form> Form>
öffentliche Klasse UploadAction erweitert actionupport { @setzter @Getter private Liste <Datei> Fotos; @Setzter@Getter Private List <String> fototscontentType; @Setzter@Getter Private List <String> phototFileName; @Setzter@Getter Private List <String> Benutzername; public String testUpload () löscht ioException {System.out.println ("Benutzername:"+userername); System.out.println ("fotos:"+fotos); System.out.println ("photosFileName:"+photosFileName); System.out.println ("photoscontentType:"+photoscontentType); // Die Datei im Server -Root -Verzeichnis an die Upload -Datei überladet // ServletContext ServletContext ServletContext = ServletActActaceContext.getServletContext (); // den realen Pfad string realPath = servletContext.getrealPath ("/upload"); System.out.println (RealPath); Datei UploadFile = New Datei (RealPath); // beurteilen, ob der Pfad existiert, wenn (! UploadFile.exists ()) {// uploadFile.mkdir () erstellen; } für (int i = 0; i <fotos.size (); i ++) {uUid uUid = uUid.randomuuid (); FileUtils.copyFile (fotos.get (i), neue Datei (RealPath + "/" + uUid + photosFileName.get (i))); } Return Success; }}1. Wie viele kleine Probleme sollten behandelt werden?
1. Dateiname hat einen doppelten Namen. Im Allgemeinen kann ein UUID vor dem Dateinamen als Präfix generiert werden.
2. Begrenzen Sie die Größe einer einzelnen Datei
3.. Dateitypen einschränken
4. Begrenzen Sie die Gesamtdateigröße
2. Der FileUpload -Interceptor ist in Struts2 bereitgestellt, um diese Attributwerte festzulegen.
Der FileUpload -Interceptor verfügt über 3 Eigenschaften, die festgelegt werden können.
HINWEIS: Die Gesamtgröße der hochgeladenen Dateien in standardmäßig.Properties unter org.apache.struts2 ist begrenzt. Sie können Konstanten verwenden, um diese Grenze zu ändern. Multipart.maxSize = 2097152
<Constant name = "Struts.DevMode" value = "true"/> <!-Ändern Sie die Größe der Gesamtdatei hier-> <konstant name NAME = "DefaultStack"> <!-Ändern Sie die Größe einer einzelnen Datei, die Commons FileUpload-Komponente akzeptiert die hochgeladene Dateien standardmäßig 2M-> <param name = "FileUpload.maximumsize"> 57,408 </param> <!-Dateityp-adoad-> <param name = tatesupload.alolaDedTedTedTedTedtype. Extensions for uploading files --> <param name="fileUpload.allowedExtensions">jpg,gif</param> </interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="myInterceptor"></default-interceptor-ref> <action name="testUpload" method="testUpload"> <result name = "success">/web-inf/views/success.jsp </result> <result name = "input">/upload.jsp </result> </action> </package>
1. Fehlermeldungen im Zusammenhang mit dem Hochladen von Dateien?
1. Fehlermeldungen im Zusammenhang mit dem Upload der Datei sind in der Datei von Struts-Messages.Properties vordefiniert.
2.. Sie können die Ressourcendatei hochladen, die der Aktion in der Datei entspricht oder die Fehlermeldung in der internationalen Ressourcendatei i18n_zh_cn.properties neu definieren
Struts.messages.Error.file.too.large = Die Datei, die Sie übergeben, ist zu groß.
Datei herunterladen
In einigen Anwendungen ist möglicherweise erforderlich, eine Datei dynamisch an den Browser des Benutzers zu senden, und der Name und der Speicherort der Datei sind beim Programmieren unvorhersehbar
Beispielcode
<a href = "testdownload"> download </a>
Die öffentliche Klasse DownloadLoadAction erweitert actionupport {// In der Regel werden die folgenden Parameter in der Aktion @setzter @Getter private string contentType bereitgestellt; @Setzter@Getter Private Long ContentLength; @Setzter@Getter Private String ContentDisposition; @Setzter@getter private InputStream InputStream; public string testDownload () löscht FileNotFoundException, UnsupportedenCodingException {// servletContext servletContext servletContext = servletActaceContext.getServletContext (); // Erhalten Sie den Pfad der Dateistring RealPath = servletContext.getrealPath ("/webinf/Datei/zumindest Sie.mp3"); // Erhalten Sie den Stream der Datei inputStream = new FileInputStream (RealPath); // Setzen Sie den Dateityp contentType = servletContext.getmetype (RealPath); // Erhalten Sie die Länge der Datei contentLength = neue Datei (RealPath) .Length (); // Setzen Sie den Dateinamen String Dateiname = "mindestens Sie.mp3"; Dateiname = new String (Dateiname.getBytes ("GBK"), "ISO8859-1"); contentDisposition = "Attachment; Dateiname ="+Dateiname; Erfolgserfolg; }}<!-Datei-Download-> <Action name = "testdownload" method = "testDownload"> <resultentyp = "stream"> <!-Dateipuffergröße-> <param name = "bufferSize"> 2048 </param> </result> </action>
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.