2011-12-12 102 views
1

在我的應用程序中,我想將圖像上傳到服務器。如何在服務器上動態上傳圖片?

我可以在服務器上傳圖片,但是在filename =%@。jpg前面提到圖片的名字。仍然是圖像

[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

相同的,但我想保存的圖像服務器與它具有相同的映像名稱...... plz幫助我。

下面是我的代碼:

-(IBAction)upload:(id)sender 
{ 

    //imageview is a UIImageView 
    NSData *imageData = UIImageJPEGRepresentation(imageView.image, 100); 


    // setting up the URL to post to 
    NSString *urlString = @"http://url.com/upload/uploader.php?"; 

    // setting up the request object now 

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    /* 
    add some header info now 
    we always need a boundary when we post a file 
    also we need to set the content type 

    You might want to generate a random boundary.. this is just the same 
    as my output from wireshark on a valid html post 
    */ 
    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    /* 
    now lets create the body of the post 
    */ 

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

    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    // setting the body of the post to the reqeust 
    [request setHTTPBody:body]; 

    // now lets make the connection to the web 

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    ///self.returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",returnString); 


} 

回答

1

變化

[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n",filename] dataUsingEncoding:NSUTF8StringEncoding]]; 

其中filename是一個的NSString *您所需的文件名

+0

沒有它的不工作...可以請你簡單解釋我.....謝謝 –

0

此行變量 [body appendData:[[NSString stringWithString:@「Content-Disposition:form-data; name = \「userfile \」;文件名= \ 「%@ JPG \」 \ r \ n「個] dataUsingEncoding:NSUTF8StringEncoding]];

內容類型:image/JPEG

代替內容處置:表單數據

並學習如何使用內容類型