只能使用上传它们的相同应用程序下载ParseFiles

时间:2017-01-24 01:51:41

标签: android file-upload parse-platform download

我被困在这个问题上的时间非常长,而且花了很多时间寻找答案却没有运气。

我可以使用以下方法检索ParseFile罚款:

ParseFile imageFile = parseObj.getParseFile("image");

除了字符串,数字和事物外。

但是,当我尝试使用以下内容下载文件的内容时

imageFile.getDataInBackground(...)

请求总是超时,代码为100错误:

com.parse.RarseRequest$ParseRequestException: i/o failure

原因如下:

"Connection refused"

令人惊讶的是,如果使用相同的应用程序上传文件,则可以下载文件内容。即使是给出完全相同的应用程序ID,客户端密钥和服务器地址的不同应用程序也无法下载其他文件,尽管他们可以下载自己的文件。我已经使用Android和iOS应用程序对此进行了测试。

当应用程序上传图像文件时,这些图像通过Parse Dashboard可见(并可下载),但只有上传文件的应用程序才能再次下载,并且没有任何应用程序可以下载Parse Dashboard本身上传的文件。

在我的应用程序中,Parse对象初始化为:

Parse.initialize( new Parse.Configuration.Builder(this)
    .applicationId("App ID")
    .clientKey("Client Key")
    .server("http://server.com:1400/service_subdir").build()

服务器' config.js'文件包含:

config.appID = 'App ID';
config.clientKey = 'Client Key';
config.jsKey = 'Javascript Key';

其中" App ID"和"客户端密钥"在两种情况下都是相同的。

另外需要注意的是,我们在同一台服务器上运行多个服务,出于某种原因,虽然这些图像正在上传到特定服务,但文件URL是作为不同的服务提供的,即使是服务器给出如下:

"http://server.com:1400/service_subdir/"

ParseFile返回的URL是:

"url": "http://localhost:1400/different_service_dir/files/App ID/..._file.png"

对于我的生活,我无法锻炼为什么。

我可以(有点)理解为什么" http://server.com:1400"被替换为" http://localhost:1400"但为什么" service_subdir"更改为" different_service_dir"完全让我困惑。即使在检索时直接从Parse Dashboard本身上传的文件仍然列出了" different_service_dir"在ParseFile的URL中(并且不会下载)。即使是由同一个应用程序上传的文件(下载),也会使用这个" different_service_dir"列出他们的URL地址,我完全不知道为什么。

感谢您提供的任何帮助, Slarti。

1 个答案:

答案 0 :(得分:0)

将文件保存到外部存储,没有应用可以读取其他应用内部存储 - 这意味着您的设备没有安全性。您仍然需要超级用户访问才能读取该文件。