単一のStruts 2ファイルタグを使用して複数のファイルをアップロードしたいとします。複数のファイルStruts 2の単一ファイルタグを使用してアップロード
Gmailと同様に、複数のファイルを選択するには、CTRLキーを使用して複数のファイルを添付します。
複数のファイルをアップロードする方法は分かっていますが、1つのファイルタグを使用したいと思います。
単一のStruts 2ファイルタグを使用して複数のファイルをアップロードしたいとします。複数のファイルStruts 2の単一ファイルタグを使用してアップロード
Gmailと同様に、複数のファイルを選択するには、CTRLキーを使用して複数のファイルを添付します。
複数のファイルをアップロードする方法は分かっていますが、1つのファイルタグを使用したいと思います。
小さなギャラリーアプリケーションで複数のファイルをアップロードします。
<s:form namespace="/gallery" action="image-upload" method="POST" enctype="multipart/form-data">
<s:file name="image" multiple="multiple"/>
<s:submit/>
</s:form>
:あなたのアクションは、すでに複数のファイルを受信するように設定されている場合、それは(警告これはIEを除くほぼすべての主要なブラウザで動作しますので、あなたはjQueryのか、このためのフラッシュベースのソリューションが必要になります)と同じくらい簡単です
あなたはおそらく既に(1つのファイルについて)最大ファイルサイズを設定するパラメータを見てきました。私が正しく覚えていれば、これはデフォルトで2MBですが、最大ファイルサイズの最大値すべてのファイルがまとめられます)。
<constant name="struts.multipart.maxSize" value="20000000" />
編集:ユーザーは、この後の値を大きく画像の優れたコレクションをアップロードできる場合(struts.xmlで)約20 MBにこの値を設定するために、非常に便利です興味のために、HTML上記からであるレンダリング...
<form id="image-upload" name="image-upload" action="/PhotoGallery/gallery/image-upload.action" method="POST" enctype="multipart/form-data">
<input type="file" name="image" value="" id="image-upload_image" multiple="multiple"/>
<input type="submit" id="image-upload_0" value="Submit"/>
</form>
UPDATE 2014年2月(ほぼ2年後): 複数の属性は、現在のInternet Explorer 10は、Firefox、オペラ、クロム、およびSafariでサポートされています。
Internet Explorer 9以前のバージョンではサポートされていませんでした。
ファイルのパラメータとして 'multiple'を見たことはありません。本当に面白いものとして言及されているdocに私をリンクさせることができます –
ファイルタグの複数の属性を見たことはありません –
+1。 @UmeshAwasthi:[ここに記載されている](http://stackoverflow.com/questions/16393581/need-to-upload-multiple-files-at-once/17212916#17212916)、Strutsの '
次のプログラム例は、Struts2フレームワークで複数のファイルをアップロードする機能を実装する方法を示しています。アプリケーションはアップロードフォームを表示します。アップロードフォームを使用すると、3つのファイルをまとめてアップロードできます。 アップロードされたファイルは、アプリケーションのstruts.xmlファイルで設定された場所にコピーされます。
サンプルアプリケーションがどのようにコード化されているかを見てみましょう。次のように アップロードフォームは、にUpload.jspページに実装されています。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Multiple Files Upload with Struts2</title>
</head>
<body>
<center>
<h2>Pick multiple files to upload</h2>
<s:form action="uploadFile" enctype="multipart/form-data" method="post">
<s:file name="fileUpload" multiple="multiple" label="Pick files" size="30"/>
<br/>
<s:submit value="Upload All" />
</s:form>
</center>
</body>
</html>
次のようにMultipleFilesUploadAction.javaファイル内のStruts2ののアクションクラスを実装します。
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class MultipleFilesUploadAction {
private File[] fileUpload;
private String[] fileUploadFileName;
private String[] fileUploadContentType;
/**
* This is the path to save uploaded file, which is configured in struts.xml
*/
private String saveDirectory;
public String doUpload() {
// copy the uploaded files into pre-configured location
for (int i = 0; i < fileUpload.length; i++) {
File uploadedFile = fileUpload[i];
String fileName = fileUploadFileName[i];
File destFile = new File(saveDirectory + File.separator + fileName);
try {
FileUtils.copyFile(uploadedFile, destFile);
} catch (IOException ex) {
System.out.println("Could not copy file " + fileName);
ex.printStackTrace();
}
}
return "success";
}
public File[] getFileUpload() {
return fileUpload;
}
public void setFileUpload(File[] fileUploads) {
this.fileUpload = fileUploads;
}
public String[] getFileUploadFileName() {
return fileUploadFileName;
}
public void setFileUploadFileName(String[] fileUploadFileNames) {
this.fileUploadFileName = fileUploadFileNames;
}
public String[] getFileUploadContentType() {
return fileUploadContentType;
}
public void setFileUploadContentType(String[] fileUploadContentTypes) {
this.fileUploadContentType = fileUploadContentTypes;
}
public String getSaveDirectory() {
return saveDirectory;
}
public void setSaveDirectory(String saveDir) {
this.saveDirectory = saveDir;
}
}
をこのPOJOアクションクラスでアップロードされたファイルを格納するために3つの配列を使用します:
private File[] fileUpload;
private String[] fileUploadFileName;
private String[] fileUploadContentType;
<s:file>
タグの値と一致することに注意してください。 fileUploadと呼ばれるStruts2の インターセプタは、セッターを介してこれらの変数 のデータをフェッチします。doUpload()
コピーし、一時ディレクトリからアップロードされたファイル saveDirectory
変数で指定された場所には、その後、 結果ページで 『成功』ビューにリダイレクトします。結果ページはresult.jsp - 成功のメッセージが表示され、非常に単純です:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Upload result</title>
</head>
<body>
<center>
<h2>The files were uploaded successfully</h2>
</center>
</body>
</html>
我々は、アプリケーションのストラットを通じてアップロードフォームページ、アクションクラスと結果ページを接続します次のようにファイルを.XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.multipart.maxSize" value="20971520" /> <!-- 20MB -->
<package name="fileUpload" extends="struts-default">
<action name="uploadFile" class="com.example.struts.MultipleFilesUploadAction"
method="doUpload">
<param name="saveDirectory">E:/Test/Upload</param>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">*/*</param>
<param name="maximumSize">4194304</param> <!-- 4MB -->
</interceptor-ref>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params" />
<interceptor-ref name="validation" />
<interceptor-ref name="workflow" />
<result name="success" type="redirect">/result.jsp</result>
<result name="input">/upload.jsp</result>
</action>
</package>
</struts>
ここ
fileUpload
はすべてのファイルを許可するように設定されています タイプはアップロードでき、個々のファイルの最大サイズは 4MBです。struts.multipart.maxSize
は、最大許容サイズを制限します。マルチパートリクエストの場合、 は20MBです。つまり、アップロードファイルの合計サイズは、 ファイルは20MBを超えることはできません。それ自体が公式ガイドと基本的に同じ - https://cwiki.apache.org/confluence/display/WW/File + Upload#FileUpload-Uploading複数のファイルをアップロードします。 –
S2単一のタグを使用してこのような機能を提供していませんが、あなたはその –
がこの質問を参照してくださいhttp://stackoverflow.com/questions/8322499/struts2-file-upload –
のためのjQueryや他のものを使用することができますちょっと@UmeshAwasthi ..あなたは上記の例のストラット2のマッピングで助けてもらえますか? –