从不同的服务器读取文件谷歌应用引擎



如果我试图从不同的服务器读取文件,例如amazon s3 bucket。在应用程序引擎中,它试图定位同一应用程序的war目录中的文件。

文件正在尝试访问网址:http://files.com/report.csv

上面的url经过类似的处理

java.io.FileNotFoundException:/base/data/home/apps/app-Id/modue Id:1.383112761745940476/http://files.com/report.csv.

如何纠正这种情况?

很难在没有看到代码的情况下进行定位,但您似乎有两个问题:

1) 如果您正在查找http://files.com/report.csv,则在http://之后缺少第二个"/"

2) 您正在寻址一个"相对"url,因此GAE正在文件系统中查找一个文件。这不是你想要的。

您需要做的:使用URL Fetch服务,将文件作为流获取,然后进行处理。链接上的示例应该会有所帮助,但要点如下:

try {
    URL url = new URL("http://www.example.com/atom.xml");
    BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        // ...
    }
    reader.close();
} catch (MalformedURLException e) {
    // ...
} catch (IOException e) {
    // ...
}

您正在尝试读取一个文件,就好像这个文件在您自己的服务器上一样。您需要使用URL Fetch API来读取文件。

最新更新