2009-12-21 7 views
10

ho trovato alcuni frammenti di codice online per caricare l'immagine da iphone alla cartella del server, mostrando di utilizzare lo scripting lato server, ad es. utilizzare PHP lato servercaricare l'immagine da iphone alla cartella del server

<?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!"; 
} 
/> 

C'è da possibilites per caricare un'immagine direttamente nella cartella del server senza il codice di cui sopra,

diciamo voglio caricare in http://111.22.333.44/mysite/pics/ w/o qualsiasi scripting lato server, se può come questo può essere fatto

grazie

risposta

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); 

questo codice sarà utile per voi ....

+0

ho dovuto togliere la linea con application/octet flusso per farlo funzionare con attachment_fu. Qualche idea, perché? –

+0

È stato un ottimo codice. Ha funzionato per me alla prima volta. Grazie parvind :) – Prerna

+0

Essere consapevoli della dimensione del file caricato. Stai creando la richiesta con il contenuto dell'intero file in memoria e poi inviandolo ... se il file è troppo grande (o stai caricando molti file contemporaneamente) probabilmente affronterai problemi di memoria – JakubKnejzlik

0

Se si imposta il server web per consentire al metodo PUT si potrebbe fare questo. Il 99% dei server Web consente solo i metodi GET e POST.

Non averlo mai fatto, non posso darti molto aiuto. Ecco una pagina che ho ricevuto da Google a parlarne:

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

Problemi correlati