簡體   English   中英

在Objective C iOS中上傳文件圖像文件代碼

[英]File Upload image file code in Objective C iOS

我是iOS應用程序開發的新手,我只想使用NSMutableURLRequest上傳圖像文件。 請求的正文應包含在圖像中。 我只想將以下圖像作為Java代碼發送

 HttpPut mCreatePost = new HttpPut(params[0]+"/data");
 FileEntity fileEntity = new FileEntity(uploadFile, "image/jpeg");
 mCreatePost.setEntity(fileEntity);
 mHttpClient.execute(mCreatePost);

請幫助我編寫上述的Objective C代碼。 提前致謝。

處理

  1. 制作一個NSMutableURLRequest
  2. 設置NSMutableURLRequest的URL
  3. 為NSMutableURLRequest設置HTTP方法
  4. 設置NSMutableURLRequest的標頭字段
  5. 為NSMutableURLRequest設置HTTP正文。 這將包括圖像文件和任何其他參數(下面的示例代碼)
  6. 初始化先前聲明的NSMutableData對象。 這用於存儲來自服務器的響應(下面的示例代碼)
  7. 初始化先前聲明的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];

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM