2009-12-21 11 views
10

encontré algunos fragmentos en línea para cargar imágenes desde el iphone a la carpeta del servidor, se muestra para usar secuencias de comandos del lado del servidor, por ejemplo. utilizar php del lado del servidorcarga de la imagen del iphone a la carpeta del servidor

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

es que ningún posibilidades para subir la imagen directamente a la carpeta del servidor sin el código anterior,

Digamos que quiero subir en http://111.22.333.44/mysite/pics/ w/o cualquier script del lado del servidor, si puede cómo esto se puede hacer

gracias

Respuesta

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

este código será útil para usted ....

+0

tuve que quitar la línea con application/octet transmitir para que funcione con attachment_fu. ¿Alguna idea de por qué? –

+0

Fue un gran código. Trabajó para mí por primera vez. Gracias parvind :) – Prerna

+0

Tenga en cuenta el tamaño del archivo cargado. Está creando la solicitud con el contenido de un archivo completo en la memoria y luego enviándolo ... si el archivo es demasiado grande (o está cargando muchos archivos al mismo tiempo) probablemente tenga problemas de consumo de memoria – JakubKnejzlik

0

Si la configuración de su servidor web para permitir que el método PUT que podría hacer esto. El 99% de los servidores web solo permiten los métodos GET y POST.

Como nunca lo hice, no puedo brindarle mucha ayuda. Aquí hay una página que obtuve de Google hablar de ello:

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

Cuestiones relacionadas