2010-07-21 1 views
2

Я пытался загрузить файл (login.zip) с использованием библиотеки ASIHTTPRequest из IPhone на встроенный Сервер Apache в Mac OS X Snow Leopard. Мой код:загрузки файла на сервер с помощью IPhone ASIHTTPRequest

NSString *urlAddress = [[[NSString alloc] initWithString:self.uploadField.text]autorelease]; 

NSURL *url = [NSURL URLWithString:urlAddress]; 

ASIFormDataRequest *request; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"login.zip"]; 

NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath] autorelease]; 

request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; 
[request setPostValue:@"login.zip" forKey:@"file"]; 
[request setData:data forKey:@"file"]; 
[request setUploadProgressDelegate:uploadProgress]; 
[request setShowAccurateProgress:YES]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

Код РНР:

<?php $target = "upload/"; 
$target = $target . basename($_FILES['uploaded']['name']) ; 
$ok=1; 

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded"; } 
else 
{ echo "Sorry, there was a problem uploading your file."; } ?> 

Я не совсем понимаю, почему файл не загружая. Если бы кто-нибудь мог мне помочь. Я застрял на этом в течение 5 дней подряд.

Заранее спасибо Nik

+0

Получили ли вы, как разрешить эту ошибку? – southpark

ответ

0

Есть несоответствие имен полей, которые вы используете?

Похоже, вы используете "файл" на Iphone:

[request setPostValue:@"login.zip" forKey:@"file"]; 

но 'закачано' на сервере:

Попробуйте изменить это, чтобы быть таким же.

+0

Я изменил их. все еще не работает. :( – Nick

+0

Что происходит? Есть ли ошибки в файле журнала сервера? Отправляются ли данные на сервер? – JosephH

+0

Ошибка в журнале ошибок. Журнал доступа читает «152.96.15.90 - - [22/Jul/2010: 13: 31:57 +0200] «POST /test/upload.php HTTP/1.1» 200 561 «Я не понимаю, и это сводит меня с ума. :(: (( – Nick

4

Попробуйте это:

[request setFile:filePath forKey:@"file"]; 

или если вы можете поместить ваш почтовый файл в NSData как этот

NSData *zipData = [[NSData alloc] initWithContentsOfFile:zipName]; 

и отправить его на сервер с

[request setData:zip forKey:@"file"]; 

на попытки сервера это

<?php 




     $dir = "/var/www/your_directory/"; 

     $path = $dir . $_FILES['file']['name']; 

     //move_uploaded_file($_FILES['file']['tmp_name'], $path); 


    if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) { 
       //return ok! :) 
    } 
    else { 
     // return -> echo"There's been a problem uploading your file. Please try again"; 
    } 
?> 

в $_FILES['file']['name']['file'] должны быть такими же, как forKey:@"file" в запросе