Asihttprequest上傳文件到 appache服務器,腳本語言php(服務器端),客戶端iphone oc

用於存儲上傳文件的服務器端php腳本:upload_file.php

<?php
    
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
    move_uploaded_file($_FILES["file"]["tmp_name"],
                       "./" . $_FILES["file"]["name"]);//將上傳的文件存儲到服務器
    //echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

?>

 注:"file"爲客戶端上傳文件時,輸入的key值,具體指的是什麼看下面代碼:

iphone客戶端代碼:


   NSURL *url = [NSURL URLWithString:WEB_SERVICES_URL];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setFile:@"/Users/mac/Desktop/Zwoptex.app/Contents/Info.plist" forKey:@"file"];
    [request setDelegate:self];
    [request startAsynchronous];

注:WEB_SERVICES_URL爲服務器端腳本的地址比如:http:localhost:8888:/MAMP/upload_file.php

      setfile的第一個參數爲爲客戶端上傳到服務端的文件,注意必須是全路徑(我有疑惑),但在mac 下必須是全路徑的,否則不會訪問網絡,更別提上傳文件了

其實就這麼簡單

客戶端第二個方法:該方法不需要使用絕對路徑

   [request setData:UIImagePNGRepresentation([UIImage imageNamed:@"test.jpg"]) withFileName:@"test.jpg" andContentType:@"image/jpg" forKey:@"file"];


文件的下載:

 NSURL *url = [NSURL URLWithString:kCONTACT_PLIST_URL];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDownloadDestinationPath:[PlistManager sharedInstance].contactFilePath];
    
    [request startSynchronous];

注:kCONTACT_PLIST_URL:爲網絡資源的地址

       [PlistManager sharedInstance].contactFilePath:爲客戶端存儲下載文件的路徑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章