【问题标题】:Downloading image from server without file extension (NSData to UIImage)从没有文件扩展名的服务器下载图像(NSData 到 UIImage)
【发布时间】:2012-06-27 08:19:53
【问题描述】:

我正在从我的服务器上下载一个应该只是个人资料图片的网址。从网址拉下图片的相关代码是这样的:

NSString *urlString = [NSString stringWithFormat:@"%@%@",kBaseURL,profile_image_url];
profilePic = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]];

我的网址是格式(注意最后没有文件扩展名,因为它是动态呈现的)

localhost:8000/people/1/profile_image

如果我在浏览器中加载 url,图像会显示;但是上面用于下拉 UIImage 的代码不起作用。我已经验证该代码确实从互联网上的随机站点中提取了图像。

对为什么会发生这种情况有任何想法吗?

【问题讨论】:

  • 执行上述代码后,你在控制台上得到了什么。我在我的项目中尝试了很多方法来显示来自服务器的图片,我发现的最突出的问题是,默认情况下,您的 localhost 文件夹是只读的,您还需要更改权限......最初我认为只读 wudnt不管我是否只是加载图片,因为从技术上讲,我只是在阅读内容,对。但这确实很重要。也尝试这样做,并让我知道你在控制台上得到了什么
  • 还有一件事,就是你的图片名称中包含空格,如果是,那么你需要在发出 URL 请求时从你的图片名称中删除空格
  • 感谢 cmets.. Jeff 的回答对我有用

标签: iphone ios uiimage nsdata nsurl


【解决方案1】:

您无法在 UIImageView 中显示它的原因是因为 UIImageView 不知道它的格式(jpeg、png 等)
未来编码的一个好方法是始终使用扩展。 不要走捷径,它们总是会变得更糟,你必须一遍又一遍地修复它们。

【讨论】:

  • 该图像不是静态资产图像,因此我无法事先知道扩展名。服务器只是吐出上传到它的任何内容。
【解决方案2】:

如果你提供 NSURL 是否有效

http://localhost:8000/people/1/profile_image

我认为 http:// 在这里很重要(以便 NSURL 知道它是指向文件还是远程 URL)。

【讨论】:

  • +1 Apple 对它允许您加载的 URL 非常非常挑剔。 http 和 itms 是它允许的两个。我也遇到过类似的问题,发现这是罪魁祸首。
  • 感谢杰夫这解决了我的问题。不得不跳舞,因为我已经存根服务器并且也在使用 file:// 但这完美地解决了我的问题:)
【解决方案3】:

首先检查以下内容:

权限:从只读变为可读写。

我在我的项目中尝试了很多方法来显示来自服务器的图片,我发现的最突出的问题是,默认情况下,您的 localhost 文件夹是只读的,您还需要更改权限......最初我以为如果我只是加载图片,则只读无所谓,因为从技术上讲,我只是在阅读内容,对。但这确实很重要。

空格

您可以检查的另一件事是包含空格的图像名称,如果是,则需要在发出 URL 请求时从图像名称中删除空格。

如果没有成功,请尝试添加扩展程序 如果一切正常,请尝试使用显然可以工作的扩展加载图像。

也为我们提供一些初始编码

让我们知道您的代码 sn-ps 和控制台输出,这可以帮助社区以更突出的方式解决问题。

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 2017-07-17
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多