-1
嗯,我對iPhone和PHP開發都很新,並且試圖簡單地將映像本地發佈到我的web服務器上(我已經設置了web服務器) 。由於某種原因,我的PHP腳本正在執行,儘管該文件沒有被保存。無法使用PHP腳本從iPhone POST到Web服務器
我相信這是這裏最基本的問題,但我似乎不能找到問題。真的很感謝你們的幫助。謝謝!
我的Objective-C代碼:
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"13.png"];
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 90);
NSString *urlString = @"http://localhost/uploader.php";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setTimeoutInterval:60.0];
[request setURL:[NSURL URLWithString:urlString]];
[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 stringWithString:@"Content-Disposition: form-data; name=\"userfile\";filename=\"myfile.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]];
[request setHTTPBody:body];
NSLog(@"%@",[[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil] encoding:NSUTF8StringEncoding]);
我的PHP腳本:
<?php
$target = "./upload/";
$target = $target.basename($_FILES['userfile']['name']) ;
$check = getimagesize($_FILES['userfile']['tmp_name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], './upload/')) {
echo "YES";
}
else
echo "NO";
?>
這些都是在PHP打印這些變量的時候,我得到的值:
print_r($target);
./upload/myfile.jpg
print_r($check[0]);
320
print_r($_REQUEST);
Array
(
)
print_r($_FILES[userfile]);
Array
(
[name] => myfile.jpg
[type] => application/octet-stream
[tmp_name] => /private/var/tmp/phpWJE4UC
[error] => 0
[size] => 8829
)
print_r($_FILES[name]):
(empty)
print_r($_FILES[type]);
(empty)
print_r($_FILES[tmp_name]);
(empty)
print_r($_FILES[error]);
(empty)
print_r($_FILES[size]);
(empty)
print_r($_FILES);
Array
(
[userfile] => Array
(
[name] => myfile.jpg
[type] => application/octet-stream
[tmp_name] => /private/var/tmp/phpMvJ4oR
[error] => 0
[size] => 8829
)
)
謝謝,馬克,但我得到了同樣的行爲 - 「move_uploaded_file」失敗。我不知道應該創建的文件的名稱,但爲了安全起見,我將它命名爲相同的名稱,即:'./upload/myfile.jpg',並創建了一個。思考? – TommyG
確保您的網絡服務器具有在該上傳目錄中創建/寫入文件的權限。檢查PHP錯誤日誌,看看是否有任何東西出現。如果存在同名的文件,請確保網絡服務器可以覆蓋它。 –
對於這個愚蠢的問題感到抱歉 - 但我如何檢查Web服務器是否具有正確的寫入權限?非常感謝。 – TommyG