php大文件的上傳

1.使用PHP的創始人 Rasmus Lerdorf 寫的APC擴展模塊來實現(http://pecl.php.net/package/apc
APC實現方法:

  • 安裝APC,參照官方文檔安裝,可以使用PECL模塊安裝方法快速簡捷,這裏不說明
  • 配置php.ini,設置參數 apc.rfc1867=1 ,使APC支持上傳進度條功能,在APC源碼說明文檔裏面有說明
  • 代碼範例:
複製PHP內容到剪貼板
PHP代碼:
if
(
$_SERVER[‘REQUEST_METHOD‘] == ‘POST‘)
{
//上傳請求
$status apc_fetch(‘upload_‘ $_POST[‘APC_UPLOAD_PROGRESS‘]);
    
$status[‘done‘] = 1;
    echo
json_encode($status);  //輸出給用戶端頁面裏的ajax調用,相關文檔請自己尋找
exit;
}
elseif
(isset(
$_GET[‘progress_key‘]))
{
//讀取上傳進度
$status apc_fetch(‘upload_‘.$_GET[‘progress_key‘]);
    echo
json_encode($status);
    exit;
}
else
{
//其他代碼,比如上傳表單等
}

2.使用PECL擴展模塊uploadprogress實現(http://pecl.php.net/package/uploadprogress
uploadprogress 模塊實現方法:

  • 使用PECL模塊安裝方法安裝該模塊
  • php.ini裏面設置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt”
  • 代碼範例:
  • 複製PHP內容到剪貼板
    PHP代碼:
    if($_SERVER[‘REQUEST_METHOD‘]==‘POST‘)
    {
    if
    (
    is_uploaded_file($_FILES[‘upfile‘][‘tmp_name‘]))
    {
    $upload_dir ‘your_path/;
            
    $ext        strrchr($_FILES[‘video‘][‘name‘], .);
            
    $sessid     $_POST[‘UPLOAD_IDENTIFIER‘] ;
            
    $tmpfile    $upload_dir $sessid
            
    $sessfile   $upload_dir $sessid .$ext;
            if
    (
    move_uploaded_file($_FILES[‘upfile‘][‘tmp_name‘],$tmpfile))
    {
    //上傳成功
    }
    else
    {
    //上傳失敗
    }
    else
    {
    //上傳錯誤
    }
    elseif
    (!empty(
    $_GET[‘sessid‘]))
    {
    header(“ExpiresMon26 Jul 1997 05:00:00 GMT“);
        
    header(“Last-Modified“ gmdate(“Dd M Y H:i:s“) . “ GMT“);
        
    header(“Cache-Controlno-storeno-cachemust-revalidate“);
        
    header(“Cache-Controlpost-check=0pre-check=0“false);
        
    header(“Pragmano-cache“);
        
    header(“Content-Type:text/html;charset=UTF-8“);[*]    $unique_id $_GET[‘sessid‘];
        
    $uploadvalues uploadprogress_get_info($unique_id);[*]    if
    (
    is_array($uploadvalues))
    {
    echo
    json_encode($uploadvalues);
        }
    else
    {
    //讀取進度失敗,另外處理邏輯
    }
    }
    else
    {
    //顯示上傳表單
    }

3.UGiA
在他的官網有下詳細的說明http://www.ugia.cn/?page_id=74

理論上可以上傳無限大的文件實時顯示上傳狀態、進度支持多文件上傳以及與表單混合上傳方便的用戶調用接口上傳進度提供兩種顯示模式:新窗口或者內嵌式(0.3)多語言支持(0.21)兼容各種瀏覽器(經過測試的瀏覽器:IE5.0、IE6.0、Mozilla、Firefox、Opera)




4XUploadFiles
最後一個是c#的組件,傳說中很強大。http://www.blue999.com/xuploadfiles/index.htm

  • 支持上傳時的斷線續傳功能
  • 支持多文件選擇功能
  • 提供上傳文件大小限制、文件個數限制、文件總數據量限制
  • 提供上傳文件過濾功能:指定允許上傳的文件類型,也可以指定不允許上傳的文件類型
  • 顯示上傳進度條
  • 自動生成縮略圖(在瀏覽器中生成,不佔用服務器資源)
  • 支持對上傳文件進行統計
  • 提供自定義上傳文件名、自定義文件存儲路徑的功能
  • 提供自定義驗證信息的功能
  • 支持Session、Cookie等操作
發佈了52 篇原創文章 · 獲贊 4 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章