从 java 中部署的服务器(即我的 Web 应用程序)的用户本地计算机访问文件

Accessing files from users local machine from deployed server (i.e. my webApplication) in java

我正在开发一个网络应用程序,我想从用户那里获取图像。 所以我写了一个 Servlet 来从用户那里获取文件路径。我将文件路径传递为...

localhostApiBase/image?path=/home/userName/Pictures/25.jpg

我在本地主机上部署了我的应用程序,它工作正常。即我的应用程序找到了文件并按预期进行了处理。我正在阅读这样的图片

File oFile = new File(path);    
BufferedImage oImage = ImageIO.read(oFile);

然后我将我的应用程序部署到 AWS Elastic Beanstalk,当我尝试使用与...

相同的路径访问相同的 Servlet
serverApiBase/image?path=/home/userName/Pictures/25.jpg

然后

File oFile = new File(path);
oFile.exists(); // returns false
BufferedImage oImage = ImageIO.read(oFile); // throws java.nio.file.NoSuchFileException: /home/userName/Pictures/25.jpg

经过一番努力,我发现它试图在服务器 (AWS Elastic Beanstalk) 上查找文件,而不是在我(用户)的本地计算机上。所以它正在抛出

       java.nio.file.NoSuchFileException .

谁能帮我解决这个问题。我希望用户从他们的机器上传图像,我将进一步使用它....

像这样将用户上传的文件保存在服务器存储中,

        File targetFile = new File(filePath);
        OutputStream outStream = new FileOutputStream(targetFile);
        outStream.write(buffer);
        outStream.close();

并像这样访问文件,

        server_ip/image?path=filePath

如果您想在 运行 期间从用户那里获取图像,您必须创建一些上传逻辑。这里有一个很好的解释:How to upload files to server using JSP/Servlet?

如果图像是静态的,即应用程序的一部分使用 Drux 提到的方法。