【问题标题】:Cocoa File Upload with Progress Bar带有进度条的 Cocoa 文件上传
【发布时间】:2010-12-20 03:12:27
【问题描述】:

(就问题而言,这确实是一个双重打击,因为确实有两个独立的问题,但它们有点属于一起。)

第一个问题:

如何使用 POST 上传文件(我已经有一个包含文件内容的 NSData 对象),同时在 NSProgressIndicator 中显示上传进度?就像可以在NSURLDownload 中执行 bytesReceived 一样,但这次使用 POST 跟踪已经发送了多少字节。

第二个问题:

虽然我有这个NSData 数组,但我将使用下面的代码发送NSData 数组。在这里,它让我感到困惑,例如,POST 值“文件”是NSData 对象。 NSDictionary 可能会在这里完成这项工作,但我现在无法访问我的电脑和可爱的 Apple Docs。:

NSMutableURLRequest* post = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:@"http://yourdomain.com/post.php"]];

[post setHTTPMethod: @"POST"];

[post setHTTPBody:myFileNSData];

NSURLResponse* response;

NSError* error;

NSData* result = [NSURLConnection sendSynchronousRequest:post returningResponse:&response error:&error];

NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]);

我将不胜感激。

【问题讨论】:

    标签: cocoa post file-upload nsurlrequest


    【解决方案1】:

    注意 - 不幸的是,这篇文章仅具有历史意义,因为可悲的是,ASIHttpRequest 在几年后停止了开发。社区的悲剧。

    今天(2014 年)的最佳答案是:“简单地说,您必须使用可用的库之一来执行此操作。”

    当有完美的库存在时,“滚动你自己的”实际上是疯狂的,它们背后确实有 10 多个人年的开发。所以,找一个库(遗憾的是不再是 ASIHttpRequest!)希望它有所帮助!


    只需使用 ASIHttpRequest。它是所有 iOS 中最常用的库,也是 Mac 上常用的网络库。

    进度跟踪是内置的。使用起来非常简单。

    如果可以的话,别忘了给这个家伙捐一点钱 - 如果他停止开发它,我们都吃饱了!

    【讨论】:

    • 好吧,我不是为 iOS 开发,而是为 Mac 开发。该库在 Mac OS X 上是否有效?
    • 太棒了...这正是我预期的效果。我正在一个额外的线程中执行同步请求,该线程执行与备份相关的所有操作,以便 UI 可以保持更新......就像将文件粘贴到 ZIP 中一样。
    【解决方案2】:

    如果您只想使用 Cocoa 来执行此操作(我同意 ASIHTTPRequest 非常好),您需要异步执行发布。您在此处发布的示例代码是同步的。

    这只是意味着您需要实现NSURLConnection 的一些委托方法来处理有关上传进度的信息。特别是,实现 connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: 方法将使您能够更新 UI 中的进度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 2011-09-11
      • 2011-08-19
      • 2011-11-06
      • 2019-11-13
      • 2021-03-26
      • 1970-01-01
      相关资源
      最近更新 更多