通过REST API处理文件下载

时间:2017-11-26 20:40:20

标签: java rest

我想设置REST API以支持通过Java下载文件(目前不需要java部分 - 我在这里说它,所以你可以让你的答案更具体针对我的问题)。

我该怎么做?

例如,我将此文件放在一个文件夹(./java.jar)中,如何以可供Java客户端下载的方式对其进行流式传输?

我忘了这说,这是针对某些付费内容的。 我的应用应该能够做到这一点

  

客户端:使用用户名发布到服务器,传递。

     

休息:相应地响应用户购买的内容(如果已购买该文件,请下载)

     

客户端:下载文件并将其放在x文件夹中。

我想在base64中编码一个文件,然后将编码结果发布到通常的.json中(可能有一个好名字 - 对java应用程序很有用,并且代码在里面 - 虽然我不知道此时应该如何重建文件)。 < - 这看似合理吗?或者有更简单的方法吗?

此外,如果不必要,请不要保留,尽管问题中没有代码,但这并不意味着我没有研究过它,它只是意味着我发现什么都不适合我的情况

感谢。

2 个答案:

答案 0 :(得分:0)

您需要的是使用有效网址的常规文件流。

以下代码摘自here

import java.net.*;
import java.io.*;

public class URLReader {
    public static void main(String[] args) throws Exception {

        URL oracle = new URL("http://www.oracle.com/");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(oracle.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}

答案 1 :(得分:0)

根据您的需求,根据您对上述答案的更新评论,您可以在用户登录后(使用您希望收到的Auth和其他标题/正文)调用您的REST端点并继续下载。

将jar /可下载内容转换为字节。更多关于此 Java Convert File to Byte Array and visa versa

稍后,如果您不希望在前面的答案中提到常规流式传输,您可以将字节内容作为Base64字符串放在正文中。您可以使用下面的代码从字节数组中编码到Base64。

Base64.encodeToString(byte[],  Base64.NO_WRAP + Base64.URL_SAFE);

此处的参考资料:How to send byte[] and strings to a restful webservice and retrieve this information in the web method implementation

同样,有很多方法可以做到这一点,这是你可以使用REST做的一种方法。

相关问题