どのように私は、Apache Commonsの持つマルチパート形式で他のパラメータを読み取ることができます
-
20-08-2019 - |
質問
私は(multipart / form-dataエンコーディングを使用して)バックサーブレットに掲載されているファイルのアップロードフォームを持っています。サーブレットでは、私がアップロードを処理するためのApache Commonsのを使用しようとしています。しかし、私はまた、単なるフィールドです形でいくつかの他のフィールドを持っています。どのように私はリクエストからこれらのパラメータを読むことができますか?
たとえば、私のサーブレットでは、私はuplaodedファイルを読み込むために、このようなコードを持っています:
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
Iterator /* FileItem */ items = upload.parseRequest(request).iterator();
while (items.hasNext()) {
FileItem thisItem = (FileItem) items.next();
... do stuff ...
}
解決
あなたはこのような何かを試すことができます:
while (items.hasNext()) {
FileItem thisItem = (FileItem) items.next();
if (thisItem.isFormField()) {
if (thisItem.getFieldName().equals("somefieldname") {
String value = thisItem.getString();
// Do something with the value
}
}
}
他のヒント
これを考え出すのに数日かかったが、ここにある、それは動作しますが、あなたはマルチパートデータ、ファイルとのparamsを読み取ることができ、ここでのコードは、次のとおりです。
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);
while(iterator.hasNext()){
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if(item.isFormField()){
if(item.getFieldName().equals("vFormName")){
byte[] str = new byte[stream.available()];
stream.read(str);
full = new String(str,"UTF8");
}
}else{
byte[] data = new byte[stream.available()];
stream.read(data);
base64 = Base64Utils.toBase64(data);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
あなたはまだ?
request.getParamを()してみてくださいました所属していません StackOverflow