将文件上传到 Spark Java

Upload file to Spark Java

我正在尝试创建一个包含上传文件的文件夹。我见过一些将文件保存到绝对文件夹中的示例,例如 D:/tmp 或主目录。我的问题是我正在尝试将上传的文件放入项目文件夹内的文件夹中。

我也试过像这样获取项目文件夹:

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

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

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

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

您需要使用 staticFiles.externalLocation().

将要上传文件的文件夹设置为 静态文件文件夹

无论是从中获取内容还是上传内容,客户端唯一可以到达的文件夹是您使用静态文件位置 API staticFiles.externalLocation() 设置的文件夹。您还可以看到 here.

的示例

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

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

这是关于你的问题。


不过您可能 运行 遇到问题。因为现在你可能有两个你想要的位置 public:

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

将这两个设置在同一位置并不是一个好的做法。我设法通过在 public 文件夹中创建一个名为 files 的符号 link 来解决这个问题。

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句柄中,我把这个文件夹作为目标,这样我就把资源和上传的文件分开了。