3

我正在开发一个小型新闻阅读器,它通过对 URL 发出 POST 请求来从网站检索信息。响应是一个带有未读新闻的 JSON 对象。

例如,App 上的最新消息的时间戳为“2013-03-01”。当用户刷新表格时,它会发布“domain.com/api/api.php?newer-than=2013-03-01”。api.php 脚本进入 MySQL 数据库并获取 2013-03-01 之后发布的所有新闻,并以 json_encoded 格式打印出来。这是

// do something to get the data in an array
echo $array_of_fetched_data;

例如响应将是[{"title": "new app is coming to the market", "text": "lorem ipsum dolor sit amet...", image: XXX}]

然后应用程序获取响应并对其进行解析,获取一个NSDictionary并将其添加到核心数据数据库中。

 NSDictionary* obtainedNews = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

我的问题是:如何将图像添加到 MySQL 数据库,存储它,使用 JSON 通过 POST HTTP 请求传递它,然后将其解释为 UIImage。

很明显,要将 UIImage 存储在 CoreData 中,它们必须转换为/从 NSData 转换。如何使用 php 和 JSON 将 NSData 来回传递给 MySQL 数据库?我应该如何将图像上传到数据库?(序列化,作为 BLOB 等)

4

1 回答 1

2

虽然您可以对图像进行 base64 编码并将其粘贴到输出 json 中...

当我遇到您的情况时,我所做的是在 json 输出中包含指向该图像的 url 链接,然后获取数据:

NSString *image = @"http://dphi.ca/files/2010/01/flower.png";
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:image] options:NSDataReadingUncached error:&error];
// write the data down somewhere as to not fetch it all the time
UIImage *uimage = [UIImage imageWithData:data];

这样做可以让您在上传、存储和下载图像时简单地将图像视为普通图像。

于 2013-06-29T09:15:30.977 回答