Как загрузить файл из приложения для iPad в PHP на MYSQL? - PullRequest
1 голос
/ 28 июня 2011

Я нашел довольно много советов по этому вопросу в Интернете, но, похоже, ничего из того, что я пробую, не работает.Это мой код target-c, основанный на уроке здесь: http://iphone.zcentric.com/2008/08/29/post-a-uiimage-to-the-web/

NSString *importFilePath = [openedUrl path];
NSString *filename = [importFilePath lastPathComponent];

//I changed this from initwithcontentsoffile because the program gets handed a url
//so I thought it made the most sense  
NSData *data = [[NSData alloc] initWithContentsOfURL:openedUrl];


NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://mysite.php?secret=%@&secret2=%@"]];
NSLog(@"the url: %@", [lastView uploadData:openedUrl]);
[request setHTTPMethod:@"POST"];

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\";filename=\"%@\"\r\n",filename] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data]];
[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];

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

Я изменил свой php-файл.Когда я жестко запрограммировал URL в качестве файла, он прекрасно работает.Однако, когда я пытаюсь передать ему файл из моего приложения, передается только имя без содержимого файла.Я не уверен, что часть, которая не работает, взята из моего php-файла или из моего кода target-c.Вот новый и улучшенный файл php:

<?
$username=$_GET['secret'];
$password=$_GET['secret2'];
$database="somedb";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Unable to select database");

$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];

$testpage = file_get_contents('$tmpName');
$testpage = mysql_real_escape_string($testpage);
mysql_query("INSERT INTO tbldocuments(Description,Document) VALUES('$fileName','$testpage')");
mysql_close;   
?> 

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

Спасибо!R

1 Ответ

0 голосов
/ 04 августа 2011

Похоже, эта обертка может решить большинство ваших проблем с объективной стороны вещей.

http://allseeing -i.com / ASIHTTPRequest / Как использовать

...