文件夹是在eclipse home中创建的,而不是在Web应用程序

时间:2015-08-28 13:53:07

标签: java

我在网络应用程序中创建了文件夹(即上传文件)。我想再创建一个文件夹"上传"运行时的文件夹取决于用户的用户名。为此我写了下面的代码。此代码正在创建文件夹和文件,但位置与我预期的不同。

我得到的位置是eclipse位置而不是Web应用程序位置

D:\PAST\RequiredPlugins\JUNO\eclipse\uploads\datto\adhar.PNG

然后我在FileOutStream中收到错误,"系统无法找到指定的位置。"

public String getFolderName(String folderName, MultipartFile uploadPhoto)
            throws ShareMeException {
        File uploadfFile = null;
        try {
            File file = new File("uploads\\" + folderName);

            if (!file.exists()) {
                file.mkdir();
            }

            uploadfFile = new File(file.getAbsoluteFile()
                    + "\\"+uploadPhoto.getOriginalFilename());
            if (uploadfFile.exists()) {
                throw new ShareMeException(
                        "file already exist please rename it");
            } else {
                uploadfFile.createNewFile();
                FileOutputStream fout = new FileOutputStream(uploadfFile);
                fout.write(uploadPhoto.getBytes());
                fout.flush();
                fout.close();
            }

        } catch (IOException e) {
            throw new ShareMeException(e.getMessage());
        }

        return uploadfFile.getAbsolutePath();
    }

我想在网络应用中保存上传的文件"上传"夹

2 个答案:

答案 0 :(得分:1)

您的文件名不是绝对的: jenkins_home/jobs/myapp/builds/build_number/myapp$myapp/archive/myapp/directory 是针对当前目录解析的,Eclipse启动器设置为uploads\folderName

您应该引入一个类似JUNO\eclipse的应用程序变量,并针对此变量解析任何数据目录(包括APP_HOME)。

此外,我建议在用户输入的输入后不要在文件系统上命名任何内容(文件或目录):你要求麻烦(用户名中的unicode字符),特别是安全漏洞 (即使与unicode的东西结合)。如果你真的想使用文件系统,请保持文件名匿名(1.data,2.data,...)并将元数据保存在某个数据库中。

答案 1 :(得分:0)

您可以在网络应用中的以下位置执行操作: -

  String folderPath= request.getServletContext().getRealPath("/");
  File file = new File (folderPath+"upload");
  file.mkdir();