I want to send an image to a web server running .Net which is not Restful .
I have tried a lot of things to convert the image into string and then sending it.
Like using initWithData:encoding: and also tried it with converting the image data into base64encodedstring by the method given in this questioniPhone to MS SQL Image Data Type Conversion Question
But no luck.
Then I thought of looking on facebook api for uploading images on facebook wall.
Using this tutorial the image can be uploaded t开发者_如何转开发o facebookhttp://www.raywenderlich.com/1626/how-to-post-to-a-users-wall-upload-photos-and-add-a-like-button-from-your-iphone-app
But the problem is, it is using asihttprequest to send the data on the facebook wall and I cannot see the raw data in the request will uploading the image . Can anyone help me out.
I tried it at my end. First I converted to base64encoding like this:
NSString *str64;
        if(Image){
            NSData *imageData = UIImageJPEGRepresentation(Image,0.75);
            str64 = [imageData base64Encoding];
        } 
Then I added into a dictionary and then added that dictionary into an array so that I can pass it as a JSON string in request's body.
NSMutableArray *ParaArray =[[NSMutableArray alloc]init];
    NSDictionary *ParaDictionary=[NSDictionary dictionaryWithObjectsAndKeys:
                                  [NSString stringWithFormat:@"%@",Userid], @"userid",
                                  [NSString stringWithFormat:@"%@",[Imagename URLEncodedString]], @"imagename",
                                  [NSString stringWithFormat:@"%@",DateNTime], @"datetime", 
                                  [NSString stringWithFormat:@"%@",ImageLocation], @"imagelocation",
                                  str64,@"image",
                                  nil]; // set the parameter
    [ParaArray addObject:ParaDictionary];
There after using ASIFormDataRequest I sent the image to server using this snippet:
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
    [request setPostValue:[ParaArray JSONRepresentation]  forKey:@"bulk_data"];
    //[ParaDictionary release];
    [ParaArray release];
    [request setTimeOutSeconds:20];
    [request startSynchronous];
It worked fine for me. I hope it helps you as well.
Data is passed in form of a string and we can directly use the base64Encoding methods by copy pasting them. Though you might know them still here they are:
- (NSString *) base64Encoding {
return [self base64EncodingWithLineLength:0];
}
- (NSString *) base64EncodingWithLineLength:(NSUInteger) lineLength {
const unsigned char *bytes = [self bytes];
NSMutableString *result = [NSMutableString stringWithCapacity:[self length]];
unsigned long ixtext = 0;
unsigned long lentext = [self length];
long ctremaining = 0;
unsigned char inbuf[3], outbuf[4];
unsigned short i = 0;
unsigned short charsonline = 0, ctcopy = 0;
unsigned long ix = 0;
while( YES ) {
    ctremaining = lentext - ixtext;
    if( ctremaining <= 0 ) break;
    for( i = 0; i < 3; i++ ) {
        ix = ixtext + i;
        if( ix < lentext ) inbuf[i] = bytes[ix];
        else inbuf [i] = 0;
    }
    outbuf [0] = (inbuf [0] & 0xFC) >> 2;
    outbuf [1] = ((inbuf [0] & 0x03) << 4) | ((inbuf [1] & 0xF0) >> 4);
    outbuf [2] = ((inbuf [1] & 0x0F) << 2) | ((inbuf [2] & 0xC0) >> 6);
    outbuf [3] = inbuf [2] & 0x3F;
    ctcopy = 4;
    switch( ctremaining ) {
        case 1:
            ctcopy = 2;
            break;
        case 2:
            ctcopy = 3;
            break;
    }
    for( i = 0; i < ctcopy; i++ )
        [result appendFormat:@"%c", encodingTable[outbuf[i]]];
    for( i = ctcopy; i < 4; i++ )
        [result appendString:@"="];
    ixtext += 3;
    charsonline += 4;
    if( lineLength > 0 ) {
        if( charsonline >= lineLength ) {
            charsonline = 0;
            [result appendString:@"\n"];
        }
    }
}
return [NSString stringWithString:result];
}
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论