Java進級のFileUploadがアップロードされた例
2243 ワード
Java進級のFileUploadがアップロードされた例
FileUploadはApple comonsの下のサブプロジェクトで、Javaプロジェクトの下のファイルアップロード機能を実現するために使用されます。よくあるファイルアップロードはSmartUpload、Servlet 3.0、Struts 2があります。
ここで使っているのはcommons-fileuplload-1.2.1です。以下は簡単な例です。解析過程は全部コードの注釈に書いてあります。コメントはとても詳しいです。
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。
FileUploadはApple comonsの下のサブプロジェクトで、Javaプロジェクトの下のファイルアップロード機能を実現するために使用されます。よくあるファイルアップロードはSmartUpload、Servlet 3.0、Struts 2があります。
ここで使っているのはcommons-fileuplload-1.2.1です。以下は簡単な例です。解析過程は全部コードの注釈に書いてあります。コメントはとても詳しいです。
//
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
// , ,
diskFileItemFactory.setSizeThreshold(1024*1024*3);
//
ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory);
//
fileUpload.setHeaderEncoding("UTF-8");
// request, list
List<FileItem> list = fileUpload.parseRequest(request);
// , map
Map<String, String> map=new HashMap<>();
//
String fileName=null;
for (FileItem fileItem : list) {
//
if (fileItem.isFormField()) {
//
String name=fileItem.getFieldName();
String value=fileItem.getString("UTF-8");
map.put(name, value);
}else {
//
//
fileName=fileItem.getName();
//
InputStream is=fileItem.getInputStream();
//
String path=this.getServletContext().getRealPath("/products/1");
OutputStream os=new FileOutputStream(path+"/"+fileName);
int len=0;
byte[] b=new byte[1024];
while ((len=is.read(b))!=-1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
コンポーネントFileUploadはFileItem Factory工場を使って新しいファイルプロジェクトを作成します。これはコンポーネントFileUploadに大きな柔軟性を与えます。この工場はどのようにプロジェクトを作成する最終的なコントロール権を持っていますか?工場の実行中にプロジェクトファイルをアップロードする一時データはメモリやハードディスクに保存できます。これはアップロード項目のサイズ(すなわち、データのバイト)に依存します。しかし、このような行為はあなたのアプリケーションで適切にカスタマイズできます。疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。