2009-12-21 19 views
10

Ich habe ein paar Schnipsel von online gefunden, um ein Bild vom iPhone auf den Server-Ordner hochzuladen, um anzuzeigen, dass serverseitige Skripte zu verwenden sind. Verwendung von PHP auf Server-SeiteBild von iPhone auf den Server-Ordner hochladen

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

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
     echo "Uploaded!"; 
}else{ 
    echo "Not Uploaded!"; 
} 
/> 

ist es kein possibilites Bild direkt an den Server-Ordner ohne den obigen Code zu laden,

Lassen Sie sagen, ich in http://111.22.333.44/mysite/pics/ w/o jeder Server-Side-Scripting hochladen möchten, wenn kann, wie dies

dank

Antwort

18
/* 
    turning the image into a NSData object 
    getting the image back out of the UIImageView 
    setting the quality to 90 
*/ 
NSData *imageData = UIImageJPEGRepresentation(image.image, 90); 
// setting up the URL to post to 
NSString *urlString = @"http://iphone.zcentric.com/test-upload.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=\"ipodfile.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]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

NSLog(returnString); 

dieser Code wird für Sie hilfreich sein ....

+0

Ich hatte die Linie mit der Anwendung entfernen/octet- streamen, um es mit attachment_fu zur Arbeit zu bringen. Irgendwelche Ideen warum? –

+0

Es war toller Code. Arbeitete für mich zum ersten Mal. Danke Parvind :) – Prerna

+0

Beachten Sie die Größe der hochgeladenen Datei. Sie erstellen die Anforderung mit dem Inhalt der gesamten Datei im Speicher und senden sie dann ... Wenn die Datei zu groß ist (oder wenn Sie mehrere Dateien gleichzeitig hochladen), treten wahrscheinlich Speicherprobleme auf – JakubKnejzlik

0

Wenn Sie Setup-Webserver die PUT-Methode ermöglichen getan werden Sie dies tun könnte. 99% der Webserver erlauben nur die Methoden GET und POST.

Nachdem ich das nie gemacht habe, kann ich dir nicht viel helfen. Hier ist eine Seite, die ich von Google bekam darüber zu sprechen:

http://www.w3.org/QA/2008/10/understanding-http-put.html

Verwandte Themen