将文件上传到Spark Java

时间:2017-06-16 00:44:55

标签: java web spark-java

我正在尝试创建一个包含上传文件的文件夹。我已经看到一些将文件保存到绝对文件夹中的示例,例如 D:/ tmp 或主目录。我的问题是我正在尝试将上传的文件放入项目文件夹中的文件夹中。 Upload folder should contains uploaded files

我也尝试使用如下方式获取项目文件夹:

    public static String getProjectFolder(){
         return System.getProperty("user.dir")+"/";
    }

结果变成这样,并且在Html文件中找不到文件!

http://localhost:1234/Users/USER_NAME/Documents/java/PROJECT_NAME/upload/genres/action.jpg

将文件夹添加到项目中的最佳方法是什么?或者我应该使用硬编码文件夹吗?

1 个答案:

答案 0 :(得分:1)

您需要使用staticFiles.externalLocation()将要上传文件的文件夹设置为静态文件夹

客户端可以访问的唯一文件夹(用于从OR上传内容)是使用静态文件位置API staticFiles.externalLocation()设置的文件夹。您还可以看到here的示例。

当我在本地运行我的服务器时,我将其定义为:

staticFiles.externalLocation(System.getProperty("user.dir") + "/src/main/resources");

这是关于你的问题。

你可能会遇到一个问题。因为现在您可能有两个要公开的位置:

  • 资源文件夹(包含所有JavaScripts,CSS等通常/src/main/resources
  • 上传文件夹(让用户上传文件)

将这两者放在同一位置并不是一个好习惯。我设法通过在公共文件夹中创建名为files的符号链接来解决这个问题。

abcmbp:resources abc$ pwd
/Users/abc/dev/wspace/proj1/src/main/resources

abcmbp:resources abc$ ls -l files
lrwxr-xr-x  1 abc  staff  27 Mar  3 21:20 files -> /Users/abc/appUploadFolder/

然后,在上传路径的post句柄中,我将此文件夹作为目标,这样我就可以将资源和上传文件分开。