如何在使用multipart / form-data时从请求中获取字符串参数?

时间:2012-04-30 05:45:47

标签: html google-app-engine servlets file-upload servlet-filters

我制作html页面上传图片,文字框有描述形式。 我使用multipart / form-data;在servlet的dopost我得到文件使用 ServletFileUpload upload = new ServletFileUpload();

获取字符串参数我使用了request.getparameter(); 但它总是给我NULL ??? 我能得到它吗?

html ::

<form name="filesForm" action="/upload" method="post" enctype="multipart/form-data">

File : <input type="file" name="file">  
<textarea name = "description"  
 rows = "4" cols = "30">Enter comments here.</textarea>
<input type="submit" name="Submit" value="Upload File">

在servlet上:

ServletFileUpload upload = new ServletFileUpload(); 
upload.setSizeMax(500000000);
 FileItemIterator iterator = null;
    try {
        iterator = upload.getItemIterator(req);
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } //  to handle contents or 
    // instances  of request.
    FileItemStream item = null;
    try {
        item = iterator.next();
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } // get  access each item on iterator.
    java.io.InputStream in = item.openStream(); // allows to read the items contents. 


    Blob imageBlob = new Blob(IOUtils.toByteArray(in)); // store each item on Blob 


    // object after converting them to Bytes.
    /*……….
    Note: we are concerned on uploading images files. So the type of files is either (.jpg or gif)
    ……….
    */
    PersistenceManager pm = PMF.get().getPersistenceManager();
    String counter="1";
    ServletOutputStream outt = resp.getOutputStream();
     //match incoming request Content type and invoke appropriate method for handel request

1 个答案:

答案 0 :(得分:5)

因为你有enctype="multipart/form-data"格式。您无法使用request.getParameter("paramnName");获取其他表单字段。它总是会给你NULL。

您必须使用FormItem的{​​{1}}来检查其常规字段或文件。

示例:

isFormField()