私はcsvファイルをブラウズしてサーバーにアップロードするファイル入力フィールドを持つJSPページを持っています。私はこのファイル入力フィールドが存在する形式でmethod = "POST"とENCTYPE = 'multipart/form-data'を使用しています。アップロード中にサーバー上のファイルコンテンツを受け取ることができません
サーブレット側(アプリケーションのサーブレット内)では、Apacheの共通ファイルアップロードAPI-ServletFileUpload APIを使用しています。このAPIのメソッドparseRequest(request)からFileItemリストを取得した後、FileItem APIのgetName()メソッド、getString()メソッドを使用してファイル名とその内容を取得できません。
私が間違っていることや、自分のアプリケーションが動作するようにする私のアプローチの変更を知る必要があります。これに関するポインタは参考になります。
ありがとうございます!
は、アプリケーションのメイン・サーブレットのdoPostメソッドで次のコードを試みた: -
を `列挙enumAttrib = request.getAttributeNames()。
while(enumAttrib.hasMoreElements()) {
String attribName = (String)(enumAttrib.nextElement());
System.out.println("DEBUG:---------AttribName = " + attribName);
System.out.println("DEBUG:---------AttribValue=" + request.getAttribute(attribName));
}`
た印刷しまっ出力:
DEBUG:---------AttribName = weblogic.servlet.network_channel.port
DEBUG:---------AttribValue=9703
はリクエストパラメータもこれだけまたは他の属性を返すべきかどうかわかりません。
はまた、次のコードを試みた:
if (ServletFileUpload.isMultipartContent(request)) {
System.out.println("Inside ApplicationMainServlet request is multipart ");
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
// Parse the request
List /* FileItem */items = upload.parseReques(request);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
String name = item.getFieldName();
System.out.println("ApplicationMainServlet name: "+item.getFieldName() + ", val: "+item.getString());
if (!item.isFormField())
{
//Item is a file
try{
InputStream is = item.getInputStream();
InputStreamReader ir = new InputStreamReader(is);
BufferedReader br = new BufferedReader(ir);
System.out.println("br : " + br);
String fileContent = "";
String strLine;
while((strLine = br.readLine()) != null){
System.out.println("strLine : " + strLine);
if(fileContent != null)
{
fileContent = fileContent+ strLine + "\n";
}
else
{
fileContent = strLine + "\n";
}
}
System.out.println("fileContent : " + fileContent);
} catch(Exception e){
e.printStackTrace();
}
System.out.println("ApplicationMainServlet file name " + item.getName()+",size "+item.getSize());
}
}
ファイルのアップロードコードを投稿できますか? – Casey
public void doProcess(HttpServletRequestリクエスト、HttpServletResponseレスポンス) ServletException、IOExceptionをスローします{ – Khushal
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload =新しいServletFileUpload(ファクトリ);リストアイテム= upload.parseRequest(リクエスト);イテレータiter = items.iterator(); while(iter.hasNext()){FileItem item =(FileItem)iter.next(); if(item.isFormField()){//ログに出力される出力は、Val =(空白)およびsize = 0です。System.out.println( "ApplicationMainServlet:name =" + item.getFieldName()+ " val = "+ item.getString()+"、ファイルサイズ= "+ item.getSize()); request.setAttribute(name、item); //追従するコード – Khushal