2014-11-24 3 views
-1

Я использую код follwing, поскольку я новичок в xcode, пожалуйста, скажите, как отправить изображение с данными. Данные прекрасно переносятся на сервер. Просто добавьте код, чтобы я мог отправить изображение на сервер:Загрузить изображение в Xcode и ios

- (IBAction)senddatatophp:(id)sender { 

    NSLog(@"Working insert button"); 

    NSString *did = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceID"]; 
    NSString *deviceTokenStr = [[[[did description] 
            stringByReplacingOccurrencesOfString: @"<" withString: @""] 
           stringByReplacingOccurrencesOfString: @">" withString: @""] 
           stringByReplacingOccurrencesOfString: @" " withString: @""]; 

    //NSLog(@"%@", deviceTokenStr); 

    NSData *getimgdata1 = UIImageJPEGRepresentation(_frontimg.image, 1); 
    NSLog(@"%@", getimgdata1); 


    NSString *[email protected]"Admin"; 
    NSString *[email protected]"panel"; 

    NSString *tag  = @"watchlist"; 
    NSString *gcmid  = deviceTokenStr; 
    NSString *brand  = textbox1.text; 
    NSString *model  = textbox2.text; 
    NSString *year  = textbox3.text; 
    NSString *condition = textbox4.text; 
    NSString *box  = textbox5.text; 
    NSString *warranty = textbox6.text; 
    //NSString *front_img = _path1; 
    //NSString *back_img = _path2; 
    //NSString *side_img = _path3; 

    NSString *sendData = @"name="; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", name]]; 
    sendData = [sendData stringByAppendingString:@"&lastname="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", lastname]]; 



    sendData = [sendData stringByAppendingString:@"&tag="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", tag]]; 
    sendData = [sendData stringByAppendingString:@"&gcmid="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", gcmid]]; 
    sendData = [sendData stringByAppendingString:@"&brand="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", brand]]; 
    sendData = [sendData stringByAppendingString:@"&model="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", model]]; 
    sendData = [sendData stringByAppendingString:@"&condition="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", condition]]; 
    sendData = [sendData stringByAppendingString:@"&year="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", year]]; 
    sendData = [sendData stringByAppendingString:@"&box="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", box]]; 
    sendData = [sendData stringByAppendingString:@"&warranty="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", warranty]]; 
    /* 
    sendData = [sendData stringByAppendingString:@"&front_img="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", front_img]]; 
    sendData = [sendData stringByAppendingString:@"&back_img="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", back_img]]; 
    sendData = [sendData stringByAppendingString:@"&side_img="]; 
    sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", side_img]]; 
    */ 


    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.onlinestoresolution.net/demo/buymywatch/buymywatch/index.php"]]; 

    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; 

    //Here you send your data 
    [request setHTTPBody:[sendData dataUsingEncoding:NSUTF8StringEncoding]]; 

    [request setHTTPMethod:@"POST"]; 
    NSError *error = nil; 
    NSURLResponse *response = nil; 
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    NSString *stringReply = (NSString *)[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    _SendWatchId = stringReply; 

    if (error) 
    { 
     NSLog(@"Error: %@", stringReply); 

    } 
    else 
    { 
     //The response is in data 
     NSLog(@"Success: %@", stringReply); 
    } 


} 
+0

вы прошли NSData * getimgdata1? в вашем запросе – Sport

+0

yesi передали код байта img –

ответ

1

использовать это для отправки файла изображения. запишите этот код, как только вы разместите свои текстовые данные на сервере.

UIImage *img=self.imgView.image; 
NSData *imageData = UIImagePNGRepresentation(img); 
NSString *urlString = [NSString stringWithFormat:@"%@upload.php",@"http://localhost:8888/ImageUploadiOS/"]; 

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

NSString *boundary = @"---------------------------14737809831466499882746641449"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"test%d.png\"\r\n",self.fileNum] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[@"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]]; 

[request setHTTPBody:body]; 

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

NSLog(@"Image Return String: %@", returnString); 
self.fileNum++; 
UIAlertView *alertUpload=[[UIAlertView alloc] initWithTitle:@"DemoApp" message:@"Image Uploaded On Server" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
[alertUpload show]; 

PHP-код для отображения данных изображения на сервере приведен ниже.

<?php 
$uploaddir = 'uploads/'; 
$file = basename($_FILES['uploadedfile']['name']); 
$uploadfile = $uploaddir . $file; 

echo "file=".$file; //is empty, but shouldn't 

if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploadfile)) { 
    echo $file; 
} 
else { 
    echo "error"; 
} 
?> 

не забудьте изменить URL-адрес запроса. для передачи множественного кода изображения является

 //image1 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedfile1\"; filename=\"testing1.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[@"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]]; 
//end here image1 



//image2 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedfile2\"; filename=\"testing2.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:imageData2]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
//end here image2 

код Php для обработки Muliple изображений одновременно является

 <?php 
$uploaddir = 'uploads/'; 
$file1 = basename($_FILES['uploadedfile1']['name']); 
$uploadfile = $uploaddir . $file1; 

echo "file=".$file1; //is empty, but shouldn't 

if (move_uploaded_file($_FILES['uploadedfile1']['tmp_name'], $uploadfile)) 
{ 
    //echo $file; 
    //echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!'; 
    echo 'file1 moved'; 
} 
else 
{ 
    echo "error"; 
} 



$file2 = basename($_FILES['uploadedfile2']['name']); 
$uploadfile = $uploaddir . $file2; 

echo "file=".$file2; //is empty, but shouldn't 

if (move_uploaded_file($_FILES['uploadedfile2']['tmp_name'], $uploadfile)) 
{ 
    //echo $file; 
    //echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!'; 
    echo 'file2 moved'; 
} 
else 
{ 
    echo "error"; 
} 

?>

+0

Что здесь данные –

+0

Ответ сервера будет назначен в данные. вместо метода удаления принимают данные ответа. –

+0

Это дает мне ошибку «Использование данных undeclaredidentifier» « –

0

Не то, что все это имеет какой-либо смысл, но если вы хотите отправить как строковые данные, так и данные изображения, необходимые для добавления данных вместе. Для этого проще всего использовать изменяемую версию NSData:

NSData *input1; 
NSData *input2; 
NSMutableData *output; 

output = [[NSMutableData alloc] initWithData:input1]; 
[output appendData:input2]; 

Тогда input1 это ваши строковые данные и input2 ваши данные изображения (или наоборот), и ваш output является то, что вы используете в организме.

И первое, что вы можете захотеть, это отправить запрос асинхронно, так как вы имеете дело с большим объемом данных.

0
// add image data 
NSData *getimgdata1 = UIImageJPEGRepresentation(_frontimg.image, 1); 
if (getimgdata1) { 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", FileParamConstant] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:getimgdata1]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

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

относятся к этому NSData and Uploading Images via POST in iOS

Смежные вопросы