我写了一个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 ...)。
我将来还希望在网络界面中使用相同的数据
有人对如何做有任何建议吗?
提前致谢!
答案 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/