繁体   English   中英

如何在Spring Surf Java Webscript中将文件上传到本地文件夹?

[英]How to get uploaded file to local folder in spring surf java webscript?

我正在上传文件。 我想获取文件并保存到本地系统中。为此,我正在使用Java中的spring surf网页脚本。 任何人都可以告诉我如何获取文件。

这是我的ftl文件:

<form name="frmUpload" id="frmUpload"action="${url.context}/upload"     enctype="multipart/form-data" method="get">
<input type="file" size="40" id="toBeUploaded" name="toBeUploaded" tabindex="2" onchange = "document.getElementById('frmUpload').submit()"required />
</form>

我正在创建一个支持Java的Web脚本来获取此文件。 这是我的Java代码。

public class Upload extends DeclarativeWebScript{

    protected ServiceRegistry serviceRegistry;
    private static final long serialVersionUID = 1L;
    private String fileName;
    private String filePath;

    private File toBeUploaded;  
    private String toBeUploadedFileName = "";  
    private String toBeUploadedContentType;  

    /** Multi-part form data, if provided */
    private FormData formData;

    /** Content read from the inputstream */
    private Content content = null;

    // upload settings
    private static final int MEMORY_THRESHOLD   = 1024 * 1024 * 3;  // 3MB
    private static final int MAX_FILE_SIZE      = 1024 * 1024 * 40; // 40MB
    private static final int MAX_REQUEST_SIZE   = 1024 * 1024 * 50; // 50MB

      @Override
      protected Map executeImpl(WebScriptRequest req,Status status) {         
          System.out.println("backed webscript called");


          Boolean isMultipart  = false;


          String fileName  = req.getParameter("toBeUploaded");        
          if(fileName == null){
              System.out.println("File Name is null");
          }else{
              System.out.println("File Name is :" + fileName);
          }       


          HttpServletRequest request = ServletUtil.getRequest();
          String file = request.getParameter("toBeUploaded");
          File file2 = new File(file);
          String filePath = request.getSession().getServletContext().getRealPath("/");        
          File fileToCreate = new File(filePath, this.toBeUploadedFileName);          
          System.out.println("filepath "+filePath);

          try {
                FileUtils.copyFile(file2, fileToCreate);
                //validateBundle(fileToCreate);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
               System.out.println("filetocreate "+fileToCreate);


        }

}

文件名可以正确发送,但会抛出FileNotFoundExeption。 这是stacktrace

java.io.FileNotFoundException: Source 'test.jar' does not exist
        at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:637)
        at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:607)

要获取上载的表单,您需要通过FormData对象。 您的代码将类似于以下内容:

    // Get our multipart form
    final ResourceBundle rb = getResources();
    final FormData form = (FormData)req.parseContent();
    if (form == null || !form.getIsMultiPart())
    {
        throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_BAD_FORM);
    }

    // Find the File Upload file, and process the contents
    boolean processed = false;
    for (FormData.FormField field : form.getFields())
    {
        if (field.getIsFile())
        {
            // Logic to process/save the file data here
            processUpload(
                    field.getInputStream(),
                    field.getFilename());
            processed = true;
            break;
        }
    }

    // Object if we didn't get a file
    if (!processed)
    {
        throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_NO_FILE);
    }

如果您确定上传的字段名称,则可以将其中的一些逻辑电路短路

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM