Oppure

Loading
26/05/12 12:38
Biaso
Salve ragazzi,
sono giorni che sbatto su questo problema, chiedo gentilmente il vostro aiuto.
Allora il problema è il seguente:
dalla mia app per iphone devo effettuare l'upload di file su un server aruba.
Premetto che la procedura che utilizzo attualmente e che posto tra qualche riga è perfettamente funzionante su altervista e non capisco perché non dovrebbe esserlo su aruba.
Lo script php per l'upload sul server è molto semplice ed è il seguente:
[CODE]
$uploaddir = "/Inetpub/webs/dominiocom/public/upload/…;;
$file = basename($_FILES['file']['name']);
$uploadfile = $uploaddir . $file;

if (!(file_exists($uploadfile)))
{
if (mkdir($uploadfile))
{
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile . "/" . $file . ".plist";)) {
echo ("{$file} creato correttamente!";);
}
else
{
die ("Errore nello spostamento dei file nella directory predisposta.";);
}
}
else
{
die ("Il server non ha permesso la creazione di una nuova cartella";);
}
}
else
{
die ("$file esiste già!";);
}
[/CODE]

Le cose che su aruba non funzionano (e su altervista si!!!) sono essenzialmente due:
-gli echo non vengono stampati mentre i die() si;
-la variabile $_FILES che dovrebbe contenere il file uploadato è sempre vuota.

Per quanto riguarda la connessione dall'iphone con NSURLConnection ecco il codice utilizzato (si tratta di un HTTP POST):
[CODE]
//Image to send
NSData *imageData = UIImageJPEGRepresentation(image.image, 90);
    // setting up the URL to post to
    NSString *urlString = @"miosito.com/public/…;;
    
    // 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=\"nome_del_file\"\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);
[/CODE]

La stringa che stampo con NSLog è sempre "(null)".
Il server aruba è di tipo windows quindi tutti i file li metto nella cartella public (l'unica con i permessi di scrittura).
Qualche anima buona mi faccia capire dove cavolo sbaglio.
Grazie a tutti, un saluto.
Ultima modifica effettuata da Biaso 26/05/12 12:55
aaa
26/05/12 16:20
Hai controllato che aruba non blocchi alcune funzioni di php? Mi è capitato con alcuni host di avere funzioni disabilitate come ad esempio exit() o roba simile