<dfn id="bq4sp"><code id="bq4sp"><dl id="bq4sp"></dl></code></dfn>
<menuitem id="bq4sp"><mark id="bq4sp"></mark></menuitem>

<menuitem id="bq4sp"></menuitem>
<abbr id="bq4sp"><button id="bq4sp"><pre id="bq4sp"></pre></button></abbr>
  • <strike id="bq4sp"><rt id="bq4sp"></rt></strike>
  • <nobr id="bq4sp"></nobr>
  • 国产亚洲tv在线观看,五月综合婷婷开心综合婷婷,嫩草院一区二区乱码,国产精品18久久久久久麻辣 ,国产精品剧情亚洲二区,国产美熟女乱又伦AV果冻传媒,国产福利高颜值在线观看,无码人妻丰满熟妇啪啪网不卡

    虛擬主機 如何上傳大于100M的文件 php網站程序

    問題

    1. 虛擬主機上傳文件大小限制100m,

    2. 有時會遇到非常大的文件上傳,上傳過程中耗時非常久,

    3. 可能服務器的限制設置了上傳文件尺寸,返回“413 request entity too large”

    整體邏輯

    1. 前端:上傳文件時,進行文件分片;發起請求時,帶上第幾次分片上傳、總片數。

    2. 后端:按照分片進行文件保存,當上傳完最后一片數據時,進行文件合并,并刪除分片文


    示例代碼 下載:  http://downinfo.myhostadmin.net/upload.zip


    只是演示功能,生產環境需要加強上傳過濾


    前端 upload.html 

    <html>
    <head>
    <meta charset="utf-8">
    <title>分片上傳</title>
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    </head>
    <body>
    <form method="post" id="myForm" enctype="multipart/form-data">
        <input type="file" id="file" name="file">
        <input type="submit" id="submit" value="上傳">
    </form>
    
    
    <script type="text/javascript">
        $('#submit').on('click', function(e) {
            // 阻止默認表單提交
            e.preventDefault();
    
            // 獲取屬性
            var myfile = $('#file')[0].files[0];
            var ext = myfile.name.split('.').pop();
            // 判斷ext是否為視頻
            var is_video = ['mp4', 'avi', 'rmvb', 'mkv'].indexOf(ext) > -1;
            var fileId = getFileIdentifier(myfile);
            // 數據切片
            var chunks = fileSlice(myfile, is_video);
            console.log(chunks)
            // 發送分割數據段
            sendChunk(fileId, chunks);
        })
        function getFileIdentifier(file){
         // 獲取文件標識符
         return file.name
         //return file.size + file.name;
       }
       function fileSlice(file, is_video) {
         // 切片不宜過大,過大需要 nginx 以及 php 做相應配置
            var chunkSize =  1024 * 1024 * 4;  //切片大小控制
            // 1.初始化數據
            var totalSize = file.size;
            var start = 0;
            var end = start + chunkSize;
            var chunks = [];
            // 2.使用bolb提供的slice方法切片
            while (start < totalSize) {
                if (is_video) {
                    console.log('視頻')
                    var chunk = file.slice(start, end, 'video/mp4');
                } else {
                    console.log('圖片')
                    var chunk = file.slice(start, end);
                }
                chunks.push(chunk);
                start = end;
                end += chunkSize;
            }
            // 3.返回切片組chunk[]
            return chunks;
        }
        function sendChunk(id, chunks){
            // 逐個提交
            // 用于保證ajax發送完畢
            var task = [];
            var totalPage=0;
            var i=0;
            totalPage=chunks.length-1;
            var fileExt = id.substr(id.lastIndexOf('.') + 1);
    
            chunks.forEach(function(chunk, index){
                var formData = new FormData();
                formData.append('file',chunk);
                formData.append("fileName",id);
                formData.append("totalPage",totalPage);
                formData.append("page",index);
                $.ajax({
                    type: "POST",
                    url: 'upload.php',
                    data: formData,
                    contentType: false,
                    processData: false,
                    dataType:"json",
                    async:false,
                    success: function(data){
                        // 移除已完成任務
                        task.pop();
                        if (data['status']==200){
                            console.log(data['downUrl']);
                            alert(data['downUrl']); //返回上傳文件路徑
                        }
                    }
                    })
                task.push('file Working');
            })
        }
    </script>
    </body>
    </html>

    后端 upload.php

    <?php
    if (empty($_POST)) {
        $res = ['status' => 500];
        echo json_encode($res);
        exit;
    }
    // 創建上傳目錄
    if(!is_dir('upload')){
       mkdir('upload', 0777);
     }
    // 創建上傳緩存目錄
    if(!is_dir('tmp')){
       mkdir('upload', 0777);
     }
     
    $fileName          = isset($_POST['fileName'])?$_POST['fileName']:'';
    $page              = isset($_POST['page'])?$_POST['page']:'';
    $totalPage         = isset($_POST['totalPage'])?$_POST['totalPage']:'';
    
    $fileTmpName       = isset($_FILES['file'])?$_FILES['file']['tmp_name']:'';
    
    $status  = 206;
    $downUrl = '';
    
    
    
    if ($fileName== ''|| $page == '' || $totalPage == '' || $fileTmpName == '') {
        $res = ['status' => 500];
        echo json_encode($res);
        exit();
    }
    
    
    
    
    // 上傳文件要保存的路徑
    $fname = sprintf('./tmp/%s-%s', $fileName, $page);
    $data  = file_get_contents($fileTmpName);
    file_put_contents($fname, $data);
    
    // 整合分片文件
    //if ($save) {
    if ($totalPage ==$page) {
        $uploadFileName = sprintf('./upload/%s%s', time(),$fileName); 
        $status         = 200;
        // 合并文件,刪除分片文件  
        for ($i = 0; $i<=$totalPage; $i++) {
            $tmp =  sprintf('./tmp/%s-%s', $fileName, $i);
            $data = file_get_contents($tmp);
            file_put_contents($uploadFileName, $data, FILE_APPEND);
            @unlink($tmp);
        }
    
        $dir = trim(dirname($_SERVER['PHP_SELF']), '/');
        if ($dir!='') {
          $dir .= '/';
        }
    
        $downUrl = sprintf('%s://%s/%s%s', $_SERVER['REQUEST_SCHEME'], $_SERVER['HTTP_HOST'], $dir,trim($uploadFileName, './'));
        $res = ['status' => $status,'downUrl' => $downUrl];
        echo json_encode($res);
        exit();
    }
    
    // 返回上傳狀態
    $res = ['status' => $status,'downUrl' => $downUrl];
    echo json_encode($res);


    運行效果

    image.png


    編輯:三五互聯
    日期:2023-12-26

    收藏 】 【 打印 】   
    您可對文檔進行評分喲~

    勾選遇到的問題提交給我們,收到反饋后保證及時修正更新!

    提交反饋需要先登陸會員帳號

    上一篇:如何將新網域名轉入三五互聯
    下一篇:聚名平臺域名外部入庫流程
    若文檔內容對您沒有幫助,不能解決問題? 您還可以 咨詢在線客服提交工單搜索常見問題 ,我們將竭誠為您服務。
      >> 相關文章
     
    分享至:
    主站蜘蛛池模板: 狠狠躁夜夜人人爽天96| 精品国产一区二区三区性色| 国产稚嫩高中生呻吟激情在线视频| 久久久国产精品VA麻豆| 免费国产一区二区不卡| 亚洲国产精品高清线久久| 18禁无遮挡啪啪无码网站| 国产 麻豆 日韩 欧美 久久| 亚洲精品国产成人| 日本免费一区二区三区日本| 亚洲成人av在线高清| 惠安县| 久久亚洲精精品中文字幕| 国产成人不卡一区二区| 国产成人AV在线免播放观看新| 中文字幕精品亚洲字幕成| 中文日产幕无线码一区中文| 亚洲一区二区三区丝袜| 一边吃奶一边做动态图| 久久三级中文欧大战字幕| 最新亚洲人成网站在线影院| 国产在线无码视频一区二区三区| 亚洲性一交一乱一伦视频| 99久久婷婷国产综合精品青草漫画 | 狠狠躁夜夜躁人人爽天天bl| 午夜免费视频国产在线| 亚洲熟妇无码另类久久久| 精品人妻av综合一区二区| 国产午夜福利视频在线| 日韩在线成年视频人网站观看| 成人爽a毛片免费| 国产精品久久久久鬼色| 激情综合色综合久久综合| 国产日韩一区二区四季| 久久国产热这里只有精品| 日韩高清亚洲日韩精品一区二区| 欧洲中文字幕一区二区| 亚洲成av人最新无码不卡短片| 亚洲一区二区三区在线播放无码 | 会宁县| 亚洲国产成人资源在线|