我正在使用ASIHTTPRequest
将图像发送到POST HTTP请求中的服务器。
该图像保存在手机图库中,我可以使用它的" assets url"来显示它,这是这样的:
?资产库://asset/asset.PNG ID = F2B91A20-615E-4E88-B9AF-8D209A587505&安培; EXT = PNG
但我的问题是我不想将整个图像加载到内存中发送它,所以我想用它的真实网址来获取并发送它。
这是我的代码:
- (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];
}
主要问题是,当我使用资产网址appendPostDataFromFile:
时,此资产网址不会返回图片,只返回nil并且不起作用。
我需要获取该图像的真实文件路径才能使用它,而不是资产网址。
在我在这里发现的一些帖子中,我发现由于沙盒,你无法从AssetsLibrary获得实际的文件路径,所以......我怎么能解决它?
非常感谢!!
答案 0 :(得分:0)
正如您所发现的,您的选择非常有限。沙盒阻止您获得“真实”文件:/// url。您唯一的选择是将图像读入内存(并可选择将其写入应用程序文档或临时文件夹)通过复制文件,您至少可以减少长期内存使用,尽管短期使用是还是很高。