我已经在 Google App Engine 中部署了一个应用程序,并且我想使用桌面上的 java 代码和用于下载请求的服务器代码从服务器上传和下载数据,还有一个:我在哪里将数据存储在应用程序引擎中?
问问题
568 次
2 回答
1
要存储二进制数据(文件内容),您有三个选项:
于 2012-04-26T13:24:20.037 回答
0
您可以将文件保存在服务器上的任何位置,您只需要知道路径即可。
我如何将它作为输出流?
这是一个可以帮助您的代码片段。
File fileOnServer = new File("Hello.txt"); // Give full path where your file is located
byte[] file = new byte[(int) fileOnServer.length()];
FileInputStream fileInputStream = new FileInputStream(fileOnServer);
fileInputStream.read(file);
int contentLength = (int) file.length;
response.setContentLength(contentLength);
response.setHeader("Content-Disposition", "attachment; filename=\"Hello.txt\"");
out = response.getOutputStream();
int bytesWritten = 0;
byte[] buffer = new byte[1024];
while (bytesWritten < contentLength) {
int bytes = Math.min(1024, contentLength - bytesWritten);
System.arraycopy(file, bytesWritten, buffer, 0, bytes);
if (bytes > 0) {
out.write(buffer, 0, bytes);
bytesWritten += bytes;
} else if (bytes < 0);
}
下载到用户端?
好吧,您可以在客户端的 Button 上添加 ClickHandler 并覆盖onClick
方法。
public void onClick(ClickEvent event) {
Window.open("UrlToYourServelet", "_blank", "null");
}
希望这可以帮助!
编辑
我找到了解决方案。您可以像这样在任何免费文件托管网站上传文件。该站点为每个上传的文件提供一个 URL。因此,在您的 serverlet 中,向 URL 发出 HTTP 请求,然后下载文件byte[]
并将其写入 outputStream,如上面的代码所示。
于 2012-04-27T06:47:23.260 回答