从 assets url 获取文件路径

Posted

技术标签:

【中文标题】从 assets url 获取文件路径【英文标题】:Get file path from assets url 【发布时间】:2014-04-02 12:47:42 【问题描述】:

我正在使用ASIHTTPRequest 将图像发送到 POST HTTP 请求中的服务器。 该图像被保存到手机图库中,我可以使用它的“assets url”获取它并显示它,如下所示: assets-library://asset/asset.PNG?id=F2B91A20-615E-4E88-B9AF-8D209A587505&ext=PNG

但我的问题是我不想将整个图像加载到内存中发送,所以我想使用它的真实 url 来获取它并发送它。

这是我的代码:

- (void)startPostWithMedia
   
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];

    [request setRequestMethod:@"POST"];

    NSString *stringBoundary = [NSString stringWithFormat:@"--%@", @"12345"];
    NSString * fullContentType = [[NSString alloc]initWithFormat:@"%@;boundary=%@", contentType, stringBoundary];

    [request addRequestHeader:CONTENT_TYPE_HDR value:fullContentType];

    [request appendPostDataFromFile:[mediaUrl absoluteString]];

    [self retain];

    [request startAsynchronous];

主要问题是,当我使用assets url 使用appendPostDataFromFile: 时,这个assets url 不返回图像,只返回nil 并且不起作用。

我需要获取该图像的真实文件路径才能使用它,而不是资产 url。

在我在这里找到的一些帖子中,我发现由于沙盒,您无法从 AssetsLibrary 获取实际的文件路径,所以...我该如何解决?

非常感谢!!

【问题讨论】:

要访问手机图库,请使用 UIImagePickerController。在相应的委托中,您将找到图像路径。 我得到的是资产路径......不是我在这里问的。 然后从资产 URL 获取图像,将其存储在某个已知位置,共享该 URL 的路径。 改为自定义路径 【参考方案1】:

正如您所发现的,您的选择确实非常有限。沙盒会阻止您获取“真实”的 file:/// url。您唯一的选择实际上是将图像读入内存(并可选择将其写入应用程序文档或临时文件夹)通过制作文件副本,您至少可以减少长期内存使用量,尽管短期使用量是仍然很高。

【讨论】:

以上是关于从 assets url 获取文件路径的主要内容,如果未能解决你的问题,请参考以下文章

获取位于 Assets.xcassets 的数据集中文件的路径

如何获取Assets的路径

从 URL 或路径获取文件?

android 修改apk的asset目录后怎么安装

如何在 Flutter 中获取 Asset 对象的路径?

如何在 iPhone 中快速从文件路径 url 获取视频或图像?