2017-05-18 47 views
-2

這裏是我的代碼,我使用的多數據發佈PDF文件:多的數據,大小爲0的目標C

我使用的是iOS 10

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
     [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
     [request setHTTPShouldHandleCookies:NO]; 
     [request setTimeoutInterval:30]; 
     [request setHTTPMethod:@"POST"]; 
     NSString *boundary = @"abc123defg321sdfdff"; 

     __block NSData *filedata; 
     NSString*str=[[attachData.fileName componentsSeparatedByString:@"."]objectAtIndex:1]; 
     if([str caseInsensitiveCompare:@"jpg"]||[str caseInsensitiveCompare:@"png"]){ 
      [attachData loadOriginalImageWithCompletion:^(UIImage * _Nullable resultImage) { 
       filedata = UIImageJPEGRepresentation(resultImage, 0.9); 

      }]; 
     }else{ 

      filedata  = [NSData dataWithContentsOfFile:attachData.originalFileResource]; 
     } 
     NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
     [request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

     NSMutableData *body = [NSMutableData data]; 




     //add params 
     [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"data"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@\r\n",requestJson]dataUsingEncoding:NSUTF8StringEncoding]]; 





     [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 


     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n",fileParams,attachData.fileName] dataUsingEncoding:NSUTF8StringEncoding]]; 
     if([str caseInsensitiveCompare:@"jpg"]||[str caseInsensitiveCompare:@"png"]){ 

      [body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

     }else { 

      [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

     } 

     [body appendData:filedata]; 
     [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

     // This is the final delimiter which ends the body in format "--%@--". 
     [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

     NSLog(@"httpbody:%@",body); 

     [request setHTTPBody:body]; 
     NSURLResponse *response; NSError *error; 

     NSData*responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

     NSDictionary *results = [NSJSONSerialization 
           JSONObjectWithData:responseData 
           options:kNilOptions 
           error:nil]; 

當我在DB文件檢查是那裏有相同的名字,但大小爲零,沒有內容。對於多上傳

var url_request = URLRequest(url: URL(string: 「tester/url」)!) 
    url_request.httpShouldHandleCookies = false 
    url_request.timeoutInterval = 60 
    url_request.httpMethod = "POST"` 

    let boundary = 「—————App——————「 
    let form_data = "multipart/form-data; boundary=\(boundary)" 
    url_request.setValue(form_data, forHTTPHeaderField: "Content-Type") 

    let body = NSMutableData() 


    /*--------------- test ---------------*/ 
    body.appendString("--\(boundary)\r\n") 
    body.appendString("Content-Disposition: form-data; name=\」\(test_key)\r\n\r\n」) 
    body.appendString(「\(test_obj)\r\n」) 

    /*----------- Image --------------*/ 
    if (str_photo_val != nil) 
    { 
     body.appendString("--\(boundary)\r\n") 
     let mimetype = "image/jpg" 
     let defFileName = 「test.jpg」 
     let imageData = UIImageJPEGRepresentation(str_photo_val!, 1) 

     body.appendString("Content-Disposition: form-data; name=\"\(str_photo_key)\"; filename=\"\(defFileName)\"\r\n") 
     body.appendString("Content-Type: \(mimetype)\r\n\r\n") 
     body.append(imageData!) 
     body.appendString("\r\n") 
    } 
    body.appendString("--\(boundary)\r\n") 

    url_request.httpBody = body as Data 
    let postLength: String = "\(UInt(body.length))" 
    url_request.setValue(postLength, forHTTPHeaderField: "Content-Length") 

    let task = URLSession.shared.dataTask(with: url_request, completionHandler: { (data, response, error) in 
     if error != nil{ 
     DispatchQueue.main.async { 
       hideLoadingHUD(for_view: self.view) 
      } 
      return 
     } 
     do { 
      let jsonData = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject] 
      print("Result -> \(String(describing: jsonData))") 

      let succed = jsonData?[APIKey.success.rawValue] as? Bool 
      DispatchQueue.main.async { 
        hideLoadingHUD(for_view: self.view) 
        } 
      } 

    } 
    catch { 
      print("Error -> \(error)") 
      DispatchQueue.main.async { 
       hideLoadingHUD(for_view: self.view) 
      } 
     } 
    }) 
    task.resume() 
} 

+0

否在頭中有「Content-Length」?這可能是原因... – holex

+0

它正在工作,但突然停止工作的工作,文件越來越腐敗在服務器端 – Sangu

回答

0

代碼替換圖片爲PDF。 PDF格式轉換爲NSData的後您上傳的數據參數

+0

pdf轉換爲NSData和上傳數據後參數 –

+0

我沒有得到你。你能指出我的代碼中有什麼錯誤或缺少的東西,並且沒有使用Swift。 – Sangu

0

內容類型更改爲PDF format和文件名也被用來.pdf

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.pdf\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: application/pdf\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:datadat]]; 

試試這個代碼。

相關問題