コメント:複数のファイルのアップロードは過去に実装するのに複雑だったかもしれませんが、HTML5の出現以来、非常に簡単になりました。以下には良い例があります。参照できます。
主な用途は、<inupt>の複数属性です<入力型= "ファイル"倍数 />
ページの詳細なコードは次のとおりです。
<!doctype html>
<html>
<head>
<Meta http-equiv = "content-type" content = "text /html; charset = gb2312" />
<Title>ソリューション4-5:複数のファイルの送信</title>
</head>
<body>
<フォーム
Action = "http://10.10.25.31:8080/Myupload/uploadphotoservlet" enctype = "multipart/form-data" method = "post">
<入力型= "ファイル"倍数 /> <入力
type = "submit" value = "submit"> <入力タイプ= "reset" value = "reset">
</form>
</body>
</html>
Javaの背景の詳細なコード:
java.io.fileをインポートします。
java.io.ioexceptionをインポートします。
java.text.simpledateformatをインポートします。
java.util.calendarをインポートします。
Import Java.util.date;
java.util.listをインポートします。
javax.servlet.servletexceptionをインポートします。
javax.servlet.http.httpservletをインポートします。
javax.servlet.http.httpservletrequestをインポートします。
javax.servlet.http.httpservletResponseをインポートします。
org.apache.commons.fileupload.fileitemをインポートします。
org.apache.commons.fileupload.fileuploadexceptionをインポートします。
org.apache.commons.fileupload.disk.diskfileitemfactoryをインポートします。
Import org.apache.commons.fileupload.servlet.servletfileupload;
/**
*サーブレット実装クラスuploadphotoservlet
*/
public class uploadphotoservletはhttpservletを拡張します{
private static final long serialversionuid = 1l;
/**
* @see httpservlet#httpservlet()
*/
public uploadphotoservlet(){
素晴らしい();
// TODO自動生成コンストラクタースタブ
}
/**
* @see httpservlet#doget(httpservletrequestリクエスト、httpservletresponse応答)
*/
保護されたvoid doget(httpservletrequest request、httpservletresponse応答)Servletexception、ioexception {
// TODO自動生成方法スタブ
DoPost(リクエスト、応答);
}
/**
* @see httpservlet#dopost(httpservletrequest request、httpservletresponse応答)
*/
@suppresswarnings( "unchecked")
保護されたvoid dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {
string imagepath = "c:// uploadfile // image //"+geteachdate()+"//"; //日付ごとにフォルダーを生成します
ファイルuploadPath = new File(ImagePath);
if(!uploadpath.exists()){
uploadpath.mkdirs();
}
ファイルtmp = new file( "c:// tmp //");
if(!tmp.exists()){
tmp.mkdirs();
}
DiskFileItemFactory = new DiskFileItemFactory(); //ディスクファクトリを作成します
Factory.setRepository(TMP); //ファイルキャッシュパスを設定します
Factory.SetsizethReshold(10 * 1096); //ディスクのメモリまたは一時フォルダーにファイルを保存するデフォルトのクリティカル値は10240、つまり10kbです
servletfileupload sfu = new servletfileupload(Factory); //処理ツールを作成します
sfu.setsizemax(10*1024*1024); //サーバーが受信できる最大ファイルサイズ、-1は上限がないことを意味します
文字列filename = null;
試す {
List <FileItem> list = sfu.parserequest(request); // analysis
if(list.size()<1){
戻る;
}
for(int j = 0; j <list.size(); j ++){
fileitem item = list.get(j);
filename = item.getName();
if(filename.equals( "")){
request.getRequestDispatcher( "/com/visualizerphoto.jsp")。
戻る;
}
int pos = filename.lastindexof( "。"); //画像ファイル形式を取得します
if(pos> 0){
日付date = new date();
filename = imagepath+date.gettime()+filename.substring(pos);
}
System.out.println( "item:"+item);
item.write(new file(filename)); //ディスクに書き込みます
}
} catch(fileuploadexception e){
e.printstacktrace();
} catch(例外e){
e.printstacktrace();
}
}
// 13-11-15
public static string geteachdate(){
カレンダーcal = charend.getInstance();
Cal.Add(calendar.date、0);
string昨日= new SimpledateFormat( "yyyy-mm-dd").format(cal
.getTime());
string [] dates =昨日.split( " - ");
string reaLdate = dates [0] .substring(2、4) + " - " + dates [1] + " - "
+日付[2];
Realdate.trim()を返します。
}
}
これがレンダリングです: