画像をアップロードする必要があります:
<form method="post" action="hi.iq/register.jsp" enctype="multipart/form-data">
Name: <input type="text" name="name" value="J.Doe">
file: <input type="file" name="file-upload">
<input type="submit">
</form>
私が与えた私のサーブレットで
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
System.out.println("user_id========= "+name);
ただし、name
の値はNULL
として返されます。
Plsヘルプ
<input type="text" id="name" name="name" value="J.Doe">
をお試しください。
編集:
Davidの回答で示唆されているように、Apache Commons Fileuploadを使用したサンプル:
FileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
// factory.setSizeThreshold(yourMaxMemorySize);
// factory.setRepository(yourTempDirectory);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload( factory );
// upload.setSizeMax(yourMaxRequestSize);
// Parse the request
List<FileItem> uploadItems = upload.parseRequest( request );
for( FileItem uploadItem : uploadItems )
{
if( uploadItem.isFormField() )
{
String fieldName = uploadItem.getFieldName();
String value = uploadItem.getString();
}
}
試す
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator<FileItem> iterator = upload.parseRequest(request).iterator();
File uploadedFile;
String dirPath="D:\fileuploads";
while (iterator.hasNext()) {
FileItem item = iterator.next();
if (!item.isFormField()) {
String fileNameWithExt = item.getName();
File filePath = new File(dirPath);
if (!filePath.exists()) {
filePath.mkdirs();
}
uploadedFile = new File(dirPath + "/" + fileNameWithExt);
item.write(uploadedFile);
}
else {
String otherFieldName = item.getFieldName();
String otherFieldValue = item.getString()
}
}
Apacheが必要ですcommons-fileupload.jar
およびcommons-io.jar
私が使用したコンテナは、そのままでマルチパートエンコードされたリクエストをサポートしていません。このため、パラメーターを解析できず、そのままではrequest.getParameter()を使用できません。
リクエストを前処理するには、サーバーサイドで Apache Commons FileUpload のようなものを使用する必要があります
request.getParameter("name");
によって返されるnull
値は、HTMLフォームでenctype="multipart/form-data"
を使用していることが原因です。
これはこの post で完全に回答されています。
Annotaion @ javax.servlet.annotation.MultipartConfigを追加し、request.getParameter()を使用するだけで、完全に機能します。
または、MultipartFormDataRequestを使用している場合は、MultipartFormDataRequest mrequestのようなオブジェクトを使用します。元の要求の代わりに。 mrequest.getParameter( "name");できます。