<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

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

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

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

    上一篇:如何將新網域名轉入三五互聯
    下一篇:聚名平臺域名外部入庫流程
    若文檔內容對您沒有幫助,不能解決問題? 您還可以 咨詢在線客服提交工單搜索常見問題 ,我們將竭誠為您服務。
      >> 相關文章
     
    分享至:
    主站蜘蛛池模板: 成人网站国产在线视频内射视频| 天柱县| 国产乱码精品一区二区上| 亚洲精品久久久久国色天香| 日韩一区二区三区精品| 亚洲精品麻豆一二三区| 一本大道色婷婷在线| 亚洲黄色片一区二区三区| 久久亚洲精品11p| 久热中文字幕在线精品观| 中文字幕日韩国产精品| 久久久久久伊人高潮影院| 亚洲av成人无码天堂| 18黑白丝水手服自慰喷水网站| 成人又黄又爽又色的视频| 久久亚洲精品中文字幕| 成人午夜免费无码视频在线观看 | 丁香五月亚洲综合在线国内自拍| 国内精品久久久久电影院| 97精品久久九九中文字幕| 国产精品美女一区二区三| 成 人色 网 站 欧美大片在线观看| 日韩一区二区三区av在线| 四虎影视一区二区精品| 中国女人熟毛茸茸A毛片| 内射囯产旡码丰满少妇| 欧美国产精品不卡在线观看| 激情综合网激情综合| 成年女人免费v片| 日本一区二区三区后入式| 久久这里有精品国产电影网| 国产精品午夜剧场免费观看| 国产69精品久久久久人妻| 国产精品亚洲综合久久小说| 亚洲一区二区三区人妻天堂| 免费无码成人AV在线播放不卡| caoporn成人免费公开| 精品精品久久宅男的天堂| 少妇真人直播免费视频| 国产欧美另类久久久精品不卡 | 国产精品久久欧美久久一区|