2010-07-05 40 views

回答

2

使用如何爲發佈數據配置NSMutableURLRequest的衆多資源之一。 Content-Type標題應該是「multipart/form-data」,並且每個文件將依次與適當的部分標題連接。 RFC2388是相關標準。

+0

每個文件都需要是NSData嗎? – Shay 2010-07-07 16:09:58

+0

這可能是這樣做的方式,特別是如果您傳輸二進制數據。只需在NSMutableData中累積請求的主體並在適當的地方添加文件數據即可。 – warrenm 2010-07-07 17:19:07

+0

你的意思是所有的文件將在一個NSMutableData? 服務器如何分隔它們? 我需要做什麼? – Shay 2010-07-07 19:14:28

1

您必須爲要上傳的不同圖片創建邊界。讓我一步一步解釋。 1.將圖像轉換爲NSData並將它們添加到字典中。

UIImage *image1 = [UIImage imageNamed:@"imageName"];   
    UIImage *image2 = [UIImage imageNamed:@"imageName"];  
    UIImage *image3 = [UIImage imageNamed:@"imageName"]; 

    NSMutableDictionary *imageDataDictionary = [[NSMutableDictionary alloc] init]; 
    [imageDataDictionary setObject:UIImagePNGRepresentation(image1) forKey:@"image"]; 
    [imageDataDictionary setObject:UIImagePNGRepresentation(image2) forKey:@"image"]; 
    [imageDataDictionary setObject:UIImagePNGRepresentation(image3) forKey:@"image"]; 
  • 當已經創建的上述字典它的時間來創建身體部分的請求。

    NSMUtableData *finalPostData = [[NSMutableData alloc] init]; 
    NSString *boundary = @"0xKhTmLbOuNdArY"; 
    NSString *endBoundary = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary]; 
    [finalPostData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];  
    contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    
    for(NSString *key in imageDataDictionary) 
    { 
        imageData = [imageDataDictionary objectForKey:key]; 
        [finalPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [finalPostData appendData:[@"Content-Disposition: form-data; name=\"upload\"; filename=\"image.png\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
        [finalPostData appendData:[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
        [finalPostData appendData:[NSData dataWithData:imageData]]; 
        [finalPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    } 
    
  • 當所有的圖像被添加。我們必須以最後的邊界結束。

    ​​
  • 現在我們的數據已準備就緒。我們只需將其附加到請求的正文。

  • 相關問題