将文件上传到服务器以在iPhone中显示UIProgressView?

时间:2013-03-19 06:22:12

标签: iphone ios objective-c nsurlconnection

我已通过我的服务器上传文件并且工作正常,但我想显示上传状态的进度视图,如何执行此操作,请帮助我

先谢谢

我试过了:

        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n",file] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:Filedata];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:body];


        NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
        if (theConnection)
            mutaebleData = [[NSMutableData data] retain];
        else
            NSLog(@"No Connection");

使用此委托上传数据状态,但它不会帮助

- (void)request:(NSURLConnection *)request 
didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
{
    NSLog(@"%d bytes out of %d sent.", totalBytesWritten, totalBytesExpectedToWrite);
}

3 个答案:

答案 0 :(得分:1)

请看一下这个帖子,它会对你有帮助:

How to track the progress of a download using ASIHTTPRequest (ASYNC)

答案 1 :(得分:0)

这是适合您的最佳自定义控制器。

您可以从此链接找到的自定义UIActivityIndicator

https://github.com/jdg/MBProgressHUD

这些不是苹果特定的控件。此MBProgressHUD控件由三个控件组成,如下所述。

  • 背景UIImageView与图片。
  • UIActivityIndicatory
  • UILabel包含您要显示的任何消息。

MBProgressHUD是一个iOS插件类,在后台线程中完成工作时显示带有指示符和/或标签的半透明HUD。 HUD用于替代未记录的私人UIKit UIProgressHUD,具有一些附加功能.......
对于mor信息,请转到上面的链接

答案 2 :(得分:-1)

最简单的是你可以提醒UIProgressView并在委托中设置你可以设置进度值,例如:

- (void)request:(NSURLConnection *)request 
didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
{
    NSLog(@"%d bytes out of %d sent.", totalBytesWritten, totalBytesExpectedToWrite);

    UIProgressView *progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
    [self.view addSubview:progressView];
    progressView.progress = (double) bytesWritten / totalBytesWritten;
}