用于上载和下载文档的REST服务器

时间:2015-11-10 07:07:07

标签: android file rest azure server

我写了一个Android应用程序,其中一部分是处理上传和下载文档。目前我正在使用Microsoft Azure服务器来保存文件。

我目前的做法是将文件转换为字符串并将其保存在Azure服务器上:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis;
try {
      fis = new FileInputStream(new File(Uridata.getPath()));
      byte[] buf = new byte[1024];
      int n;
      while (-1 != (n = fis.read(buf)))
             baos.write(buf, 0, n);
} catch (Exception e) {
       e.printStackTrace();
}
byte[] bbytes = baos.toByteArray();
item.setStringFile(Base64.encodeToString(bbytes, Base64.URL_SAFE));
item.setName(Uridata.getLastPathSegment());

其中 item 是保存字符串表示形式和文件名并且正在加载到Azure的类, Uridata 是所选文件的Uri实例

我对此解决方案存在一个主要问题,它是文件大小的限制。 我正在寻找一个好的服务器而不是Azure(可能是一个RESET),如果有更好的方法来保存各种文件(pdf,word ...)。

我将来还希望在网络界面中使用相同的数据

有人对如何做有任何建议吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

首先,您不必将文件转换为字符串,只需将其保存为文件即可。您有可能通过继续这样做而丢失数据。请参阅:How do I save a stream to a file in C#?

如果您正在寻找其他服务来保存文件,那么您应该查看Azure Blob存储。它允许您根据需要将任意数据上传到任意文件的存储服务。参见例如: https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/