2011-12-12 101 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

代替内容处置:表单数据

并学习如何使用内容类型