Java 目标C iOS中的文件上载图像文件代码

Java 目标C iOS中的文件上载图像文件代码,java,objective-c,nsmutableurlrequest,Java,Objective C,Nsmutableurlrequest,我是iOS应用程序开发新手,我只想使用NSMutableURLRequest上传一个图像文件。请求的主体应包含在图像中。我只想发送如下的java代码图像 HttpPut mCreatePost = new HttpPut(params[0]+"/data"); FileEntity fileEntity = new FileEntity(uploadFile, "image/jpeg"); mCreatePost.setEntity(fileEntity); mHttpClient.ex

我是iOS应用程序开发新手,我只想使用NSMutableURLRequest上传一个图像文件。请求的主体应包含在图像中。我只想发送如下的java代码图像

 HttpPut mCreatePost = new HttpPut(params[0]+"/data");
 FileEntity fileEntity = new FileEntity(uploadFile, "image/jpeg");
 mCreatePost.setEntity(fileEntity);
 mHttpClient.execute(mCreatePost);
请帮我写上面的目标C代码。提前感谢。

过程

  • 发出NSMutableURLRequest
  • 设置NSMutableURLRequest的URL
  • 为NSMutableURLRequest设置HTTP方法
  • 为NSMutableURLRequest设置标头字段
  • 为NSMutableURLRequest设置HTTP正文。这将包括图像文件和任何其他参数(下面的示例代码)
  • 初始化以前声明的NSMutableData对象。这用于存储来自服务器的响应(下面的示例代码)
  • 初始化以前声明的NSURLConnection对象并设置其委托。在示例代码中,我创建了与委托相同的类,并实现了委托方法
  • 示例代码

    - (void)uploadImage    
        NSString *urlStr = @"your link to the server";
    
            NSMutableURLRequest *urlRequest = [[[NSMutableURLRequest alloc] init] autorelease];
            [urlRequest setURL:[NSURL URLWithString:urlStr]];
    
            [urlRequest setHTTPMethod:@"POST"];
    
            NSString *myboundary = [NSString stringWithFormat:@"---------------------------14737809831466499882746641449"];
            NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",myboundary];
            [urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
    
            NSMutableData *postData = [NSMutableData data];
    
            NSString *filePath = @"path to file you want to upload";
    
                NSData *zipData = [NSData dataWithContentsOfFile:filePath];
                if(zipData != nil){
                    [postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
                    [postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n", @"file.zip"]dataUsingEncoding:NSUTF8StringEncoding]];
                    [postData appendData:[[NSString stringWithFormat:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
                    [postData appendData:[NSData dataWithData:zipData]];
                }
    
    
            NSString *params =@"Any other parameters you want to send with the file";
    
                NSLog(@"%@",params);
                [postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
                [postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"params"] dataUsingEncoding:NSUTF8StringEncoding]];
                [postData appendData:[[NSString stringWithFormat:@"%@", params] dataUsingEncoding:NSUTF8StringEncoding]];
    
    
            [postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
    
            [urlRequest setHTTPBody:postData];
    
            [urlRequest setValue:[SettingsDataStore getSharedInstance].cooike forHTTPHeaderField:@"Cookie"];
    
            responsedata = [[NSMutableData alloc] initWithData:nil];
            conn =  [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
    
        }
    
        //NSURLConnection Delegate
    
        - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
            [responsedata appendData:data];
        }
        - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
            NSLog(@"error occured %@", [error localizedDescription]);
            [responseData release];
            [conn release];
    
    
        }
    
        - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    
            //Do something with responseData and release it
    
            [responseData release];
            [conn release];
    
        }
    

    在HttpPut上:您可以使用NSMutableURLRequest的三种方法,setValue:forHTTPHeaderField:,setHTTPMethod:,setHTTPBody。欢迎使用SO。请描述解决此问题的过程。只是不要写代码。@Rashad我修改了我的答案。请看一看。