在Grails中上传目录的最佳方法是什么?
我试试这段代码:
def upload = {
if(request.method == 'POST') {
Iterator itr = request.getFileNames();
while(itr.hasNext()) {
MultipartFile file = request.getFile(itr.next());
File destination = new File(file.getOriginalFilename())
if (!file.isEmpty()) {
file.transferTo(destination)
// success
}
else
{
// failure
}
}
response.sendError(200,'Done');
}
}
不幸的是,我只能按文件上传文件。 我想定义我的目录,并直接上传所有文件。
有什么想法吗?
答案 0 :(得分:1)
这里有一个主要的误解。您发布的代码仅在服务器和客户端在物理上相同的计算机上运行时才会起作用(在现实世界中不会发生)和如果您是使用具有错误行为的MSIE浏览器沿文件名发送完整路径。
实际上,您应该将上传文件的内容作为InputStream
获取,并将其写入任何OutputStream
通常的Java IO方式。文件名可用于在服务器端创建具有相同名称的文件,但您将确保从文件名中删除错误的MSIE发送路径。
对于您的实际功能要求,HTML不提供通过单个<input type="file">
元素上传完整目录或多个文件的工具。您需要创建一个能够实现此功能的客户端应用程序,并从您的网页提供此服务,例如使用Swing JFileChooser的Java Applet。存在第三方解决方案,例如JumpLoader。