如何从特定网址下载文件?

Posted

技术标签:

【中文标题】如何从特定网址下载文件?【英文标题】:How to download file from particular url? 【发布时间】:2010-04-23 06:06:50 【问题描述】:
NSURL * url = @"http://192.168.100.161/UploadWhiteB/wh.txt";
NSData * data = [NSData dataWithContentsOfURL:url];

if (data != nil) 
  NSLog(@"\nis not nil");
  NSString *readdata = [[NSString alloc] initWithContentsOfURL:(NSData *)data ];

我编写此代码是为了从给定的 url 下载文件...但我在线收到错误NSData * data = [NSData dataWithContentsOfURL:url];

未捕获的异常...

所以请帮帮我。

【问题讨论】:

我不了解 Objective-C,但为什么不捕获异常,以便打印出来并了解更多问题所在? 大声笑,uncaght 表达式不是 那个 【参考方案1】:

你的第一行应该是

NSURL * url = [NSURL URLWithString:@"http://192.168.100.161/UploadWhiteB/wh.txt"];

NSURL 不是字符串,但可以很容易地从字符串构造。)

我希望您在第一行得到编译器警告——忽略编译器警告是不好的。第二行失败,因为 dataWithContentsOfURL: 期望得到一个指向 NSURL 对象的指针,而当您向它传递一个您已键入 NSURL* 的指针时,url 实际上指向一个 NSString 对象.

【讨论】:

NSData 对象的来源对于此方法是否重要? In this question 我正在尝试从 URL 将 .sqlite 数据库下载到 NSData 对象中,但它似乎没有正确保存它。该文件已写入,但是当我尝试访问它(通过我的应用程序或使用 3rd 方查看器)时,它告诉我它不是有效的 SQLite 数据库。 dataWithContentsOfURL 是否仅适用于下载 .txt 文件或类似的文件?【参考方案2】:
    NSString *file = @"http://192.168.100.161/UploadWhiteB/wh.txt";
    NSURL *fileURL = [NSURL URLWithString:file];

    NSLog(@"qqqqq.....%@",fileURL);

    NSData *fileData = [[NSData alloc] initWithContentsOfURL:fileURL];

【讨论】:

【参考方案3】:

-[NSString initWithContentsOfURL:] 已弃用。你应该使用-[NSString (id)initWithContentsOfURL:encoding:error:]。无论哪种情况,URL 参数都是NSURL 实例,而不是NSData 实例。当然,您在尝试使用错误类型初始化字符串时会出错。您可以使用-[NSString initWithData:encoding:] 使用 URL 数据初始化字符串,或者直接从 URL 初始化字符串。

【讨论】:

以上是关于如何从特定网址下载文件?的主要内容,如果未能解决你的问题,请参考以下文章

C#如何从url下载csv文件[重复]

使用 js 从网站下载或仅保存图像文件

如何从服务器下载文件并将其保存在 Android SD 卡中的特定文件夹中?

通过selenium和phantomjs从动态网址下载文件

使用 Web 服务从 SharePoint 下载文件的特定版本

如何下载整个网站的图片(只能通过网址访问,无超链接)