Использование NSURLSession с backgroundSessionConfiguration для POST фоновых видеороликов PHP

Я использую NSURLSessionUploadTask для загрузки изображения в фоновом режиме, используя NSURLSession с backgroundSessionConfiguration.

Я делюсь приведенными ниже фрагментами кода IOS и PHP, где я использовал для загрузки изображений [необработанные данные] на сервер с бэкэндом PHP. И этот файл загружается в фоновом режиме.

       - (void)uploadImage:(NSURL*)image
       {
       NSString *urlString  =[NSString    stringWithFormat:@"www.dummy.com/upload.php"];
       NSURL *url   =[[NSURL alloc]initWithString:urlString];
       // 1
      static NSURLSession *upLoadSession = nil;
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
      NSInteger randomNumber = arc4random() % 1000000;
  NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:[NSString stringWithFormat:@"com.example.apple-samplecode.SimpleBackgroundTransfer.BackgroundSession%ld",(long)randomNumber]];
  upLoadSession = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});

       NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
       [request setHTTPMethod:@"POST"];

       // 3
       self.uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:image];

       // 5
       [self.uploadTask resume];
        }

Функция PHP--

         $putdata = fopen("php://input", "r");

         /* Open a file for writing */
         $project_id = $_REQUEST["api"];
         $fp = fopen($project_id.".MOV", "w");

          /* Read the data 1 KB at a time
          and write to the file */
          while ($data = fread($putdata, 1024))
          fwrite($fp, $data);

         /* Close the streams */
         fclose($fp);
         fclose($putdata);


  >>>>3)I get response on logs on IOS from task.response-


   Connection = "keep-alive";
   "Content-Length" = 309;
   "Content-Type" = "text/html; charset=UTF-8";
   Date = "Wed, 02 Apr 2014 03:49:04 GMT";
   Server = "Apache/2.2.15 (Red Hat)";
   Via = "1.0 Proxy6-B24:3128 (squid/2.6.STABLE21)";
   "X-Cache" = "MISS from Proxy6-B24";
   "X-Cache-Lookup" = "MISS from Proxy6-B24:3128";
   "X-Powered-By" = "PHP/5.3.3";

Я надеюсь, что это поможет кому-то в этом нуждается.


person Virendra Vaishnav    schedule 02.04.2014    source источник
comment
Что ж, ваш PHP ожидает стандартную публикацию формы, поэтому вы кодируете свои данные как multipart/form-data? См. этот ответ для некоторой глубины на том. Похоже, вы также не устанавливаете Content-Type... -nsurlconnect">Это, вероятно, самый близкий рабочий пример, который я вижу на SO, к тому, что вы делаете; хотя он не использует фоновую загрузку, принципы те же.   -  person Matt Gibson    schedule 02.04.2014
comment
Мэтт, спасибо за вашу помощь, я обнаружил себя, борясь с кодом. Если вы можете поделиться со мной, как я могу получить данные ответа с сервера, пока я получаю только заголовки ответов.   -  person Virendra Vaishnav    schedule 02.04.2014