从 iPhone 应用程序中的 URL 识别文件类型
Posted
技术标签:
【中文标题】从 iPhone 应用程序中的 URL 识别文件类型【英文标题】:Identify file type from URL in an iPhone app 【发布时间】:2012-08-17 07:27:51 【问题描述】:对于 iPhone 应用,我正在使用 URL 下载文件:
来自这种类型的url::http://xxxxxxxxxxxxxxxxxxx.com/xxxxxxx//xxx/ipad.html?operation=getFile&contentId=61768b16-6b44-4d0b-bdcf-d10107d1f328
我正在从服务器下载文件,但它的类型可能是 .pdf 或 .docx 或 .doc
有没有办法从 url 识别文件类型?
【问题讨论】:
我猜在整个文件被下载之前你不会知道它的文件类型。另一种方法是在 url 本身中为文件类型添加一个参数,因此请先检查您的 url 参数并相应地继续。 【参考方案1】:不,由于文件名不在 URL 中,因此您无法做出假设。
但是在您收到 URL 的标头后,他们可能会告诉您您将收到什么样的文件。
【讨论】:
【参考方案2】:在下面的 NSURLConnectionDelegate 方法中
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
NSString *mimeType = [response MIMEType]
NString *suggestedFilename = [response suggestedFilename];
当然,只有从服务器获取它们才有效。
【讨论】:
【参考方案3】:在您提供的 URL 中没有任何类型的指示,即使该 URL 看起来确实指定了某种类型的文件(例如 http://foo.com/bar.pdf
),也不能保证服务器实际上会返回 PDF 文件。
如果您不想下载该文件,您可以随时发出 HEAD 请求以仅获取 HTTP 标头并查看 Content-Type
标头的值。或者,您可以在请求中放置 Accept
标头,以限制对特定类型数据的响应。
【讨论】:
以上是关于从 iPhone 应用程序中的 URL 识别文件类型的主要内容,如果未能解决你的问题,请参考以下文章
从其他应用程序打开 URL 仅适用于 iPad,在 iPhone 上禁用
WinSCP .NET 程序集无法识别 Session.PutFiles 中的 FTP 链接/URL