来自html表单的FTPClient上传文件

时间:2013-02-07 22:08:38

标签: ftp inputstream html-form ftp-client servlet-3.0

我正在尝试在我的servlet中编写java代码,通过FTP上传一个简单的html表单中的文件,如下所示:

<form name="fileUpload" method="post" action="StuffService" enctype="multipart/form-data">
     <input type="file" name="nomeFile" />   
     <input type="submit" value="GO"/>
</form>

此表单位于JSP中,并通过doPost()方法与Servlet 3.0 StuffService(使用@MultipartConfig)绑定。

使用库 common-io-2.4 common-net-3.2 我创建了一个FTPClient对象来上传服务器上的文件:

FTPClient client = new FTPClient();
...
client.storeFile(...);

storeFile方法需要文件名和InputStream。

如果文件来自HTML表单,我如何才能正确获取InputStream?

我试过了:

Part filePart = request.getPart("nomeFile");
String fileName = getFilename(filePart);
File f = new File(fileName);
FileInputStream input = new FileInputStream(f);

client.storeFile(fileName, input);

但没有,我得到 java.io.FileNotFoundException 。也许我需要文件的完整路径,但我已经读过,从html表单中找不到安全html的东西。

我该怎么做?

谢谢你,对不起我的英文不好! 再见

1 个答案:

答案 0 :(得分:-1)

在servlet中覆盖doPost(),你可以从httpServletRequest获取输入流,如下所示。 但请记住在web.xml中配置servlet或使用@webservlet注释

@Override
 public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

      InputStream in = req.getInputStream();
       ...
}