在servlet

时间:2017-10-05 08:42:50

标签: javascript java excel jsp servlets

我正在尝试在servlet中上传一个excel并对其进行处理。上传时我在表单中设置了enctype =“multipart / form-data”。但是在我的servlet中.isMultiPart(request)返回false。

JSP代码:

function fSubir()

{

fFreezeButtons();

this.document.forms[0].action="../servlet/renault.saf.demandepiece.demandes.servlet.AjouterPoste";

if (this.document.forms[0].Flag.value == "1")

{

this.document.forms[0].Flag.value = "0";

this.document.forms[0].submit();

}

}

选择.xlsx类型文件:

<input type="submit" value="upload" onclick="fSubir()"/>

我的.Jsp还有另一种形式的get方法,它没有任何enctype。

Servlet代码;

public class AjouterPoste扩展了SapprServlet {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private final String UPLOAD_DIRECTORY = "/appli01/safdev01/saf_cl2/test/";

public void performTask(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    try {
        System.out.println("inside the AjouterPoste class - performTask");
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        System.out.println("Inside doPost:"+isMultipart+":"+request);

请查找我正在尝试上传文件的代码部分。

1 个答案:

答案 0 :(得分:0)

当您提交包含multipart/form-data的表单时,您无法使用request.getParameter(paramName)。而是使用下面的代码(Apache FileUpload库的一部分)

try {
        List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                // this part is used instead of request.getParameter
                String fieldName = item.getFieldName();
                String fieldValue = item.getString();
                // do something here
            } else {
                // this is the file processing part
                String fieldName = item.getFieldName();
                String fileName = FilenameUtils.getName(item.getName());
                InputStream fileContent = item.getInputStream();
       ...
            }
        }
    } catch (FileUploadException e) {
        throw new ServletException("exception", e);
    }

通过检查FileItem.isFormField()方法返回true,您可以判断特定项目是常规表单项(而不是文件)。