0

你好,我设法创建了一个表单,让我有机会上传文件。代码如下:

应用程序上下文.xml:

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="100000"/>
 </bean>

表格:

 <%@page contentType="text/html;charset=UTF-8" %>
 <%@page pageEncoding="UTF-8" %>
 <%@ page session="false" %>
 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<html>
 <head>
     <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Upload Example</title>
 </head>
 <body>
    <form:form modelAttribute="uploadItem" method="post" enctype="multipart/form-data">
        <fieldset>
            <legend>Upload Fields</legend>

            <p>
                <form:label for="name" path="name">Name</form:label><br/>
                <form:input path="name"/>
            </p>

            <p>
                <form:label for="fileData" path="fileData">File</form:label><br/>
                <form:input path="fileData" type="file"/>
            </p>

            <p>
                <input type="submit" />
            </p>

        </fieldset>
    </form:form>
  </body>
</html>

该模型:

public class UploadItem
{
private String name;
private CommonsMultipartFile fileData;

public String getName()
{
  return name;
}

public void setName(String name)
{
  this.name = name;
}

public CommonsMultipartFile getFileData()
{
  return fileData;
}

public void setFileData(CommonsMultipartFile fileData)
{
 this.fileData = fileData;
}

}

控制器:

@Controller
@RequestMapping(value = "/upload")
public class UploadController
{
@RequestMapping(method = RequestMethod.GET)
public String getUploadForm(Model model)
{
  model.addAttribute(new UploadItem());
  return "upload/uploadForm";
}

@RequestMapping(method = RequestMethod.POST)
public String create(UploadItem uploadItem, BindingResult result)
{
if (result.hasErrors())
{
  for(ObjectError error : result.getAllErrors())
  {
    System.err.println("Error: " + error.getCode() +  " - " + error.getDefaultMessage());
  }
  return "upload/uploadForm";
}


return "redirect:/app/";

} }

现在我的问题是如何将上传文件存储到应用程序中的文件夹中。我希望将用户在文本框中给出的名称作为名称。以及如何提取 pdf 文件并将其打开到浏览器中?什么我应该添加现有代码吗?我不知道该怎么做。请帮助我

4

2 回答 2

1

您只需要在控制器方法中再添加一个参数,例如HttpServletRequest request

之后,您需要使用下面提到的行获取方法中的真实路径。

request.getServletContext().getRealPath("your directory name here"); 

您需要在应用程序根文件夹中创建一个目录。并替换上面行中的名称。

然后使用您获得的真实路径创建一个 File 对象。之后,请写下一行。

uploadItem.getFileDate.transferTo(you file object created above);

你完成了。我认为这应该为你工作。

希望对您有所帮助。

干杯。

于 2012-05-17T11:49:59.253 回答
1

如果您要为文件指定另一个名称,则它不会替换现有文件。如果文件名相同,那么它肯定会替换。很明显。

第二件事是当您定义produces={"application/pdf"}时,您还需要使您的jsp页面具有这种内容类型。

于 2012-05-18T08:42:55.863 回答