我正在尝试为我现有的java项目创建一个web服务。在我的java项目中,它能够在输入文件路径位置时处理文档,并将其插入到Postgresql数据库中。我创建了一个动态web项目(使用Tomcat6、RESTful web服务和jersey)。到目前为止,在web项目中,它在本地主机浏览器上有一个“选择文件”按钮,允许我选择一个文件。然后,我可以“提交”文档;但是现在它只是将文档上传到我的计算机上的不同位置。是否可以“选择文件”,然后将文件路径位置传递给我的java项目,该项目将处理该文件并将其插入到我的数据库中?如果是这样,我如何才能做到这一点呢?
非常感谢您的任何想法,感谢您的宝贵时间!
伊丽莎白
发布于 2012-08-01 03:22:50
在Java servlet中,您需要实现doPost方法。在该方法中,使用来自Apache的Apache从http://commons.apache.org/fileupload/访问客户端上传的任何文件。
这里有一些东西可以让你入门:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory disk = new DiskFileItemFactory();
disk.setRespository(new File(TEMP_STORAGE));
ServletFileUpload upload = new ServletFileUpload(disk);
upload.setFileSizeMax(MAX_FILE_SIZE);
List<FileItem> files = upload.parseRequest(request);
//...get actual file with files.get(index).getInputStream() and process them....
.....
}但是在实现任何东西之前,请先阅读他们的文档
在客户端,有一个带有这种标记的表单:
<form enctype="multipart/form-data" ...发布于 2012-08-01 03:20:53
您需要使用java servlet并查看下列库:从那里开始,http://commons.apache.org/fileupload/应该很简单。
发布于 2012-08-01 08:57:33
没有可靠的方法可以简单地将文件名从客户端发送到服务器,然后让服务器获取文件。相反,如果您希望您的软件比现有的Postgres命令行客户端更有用,则需要上传整个文件(即使客户端和服务器在同一台计算机上)。
如果您希望接受大文件,我强烈建议您使用流方法将文件内容直接从请求推送到数据库中。否则,您可能会对堆空间施加很大的压力(例如,如果您试图将整个文件加载到内存中),或者在写入磁盘以缓冲文件时遇到性能和同步问题。由于JDBC API能够将数据流式传输到数据库,因此最好的方法是将请求的InputStream直接连接到数据库。
请注意,大多数“文件上传”API(包括Apache commons-upload和Servlet 3.0文件上传功能)都被操纵为将文件上传到磁盘上的临时文件,然后在处理请求后将其删除。我不相信任何提供的流媒体功能,所以你可能不得不自己写。
https://stackoverflow.com/questions/11747342
复制相似问题