2013-05-08 50 views
3

我想整合罰款上傳[jquery wrapper]爲我的PHP項目。在那,我試圖通過使用分塊選項來上傳一個25MB的文件。精細上傳需要塊文件並重新加入回來

但什麼是這裏發生的一切,這豆腐塊文件,並將爲blob0,blob1,blob2 ...

我想我的原始文件存儲在的位置。但在這裏,這些塊將以不同的名稱存儲。我已經厭倦了到目前爲止,

<div id="jquery-wrapped-fine-uploader"></div> 
<script src="jquery.js" type="text/javascript"></script> 
<script src="jquery.fineuploader-3.5.0.js"></script> 
<script> 
    $(document).ready(function() { 
     $('#jquery-wrapped-fine-uploader').fineUploader({ 
      debug: true, 
      request: { 
       endpoint: 'upload.php', 
      }, 

      chunking: { 
       enabled: true, 
       partSize: 2000000, 
       paramNames: { 
        partIndex: 'qqpartindex', 
        partByteOffset: 'qqpartbyteoffset', 
        chunkSize: 'qqchunksize', 
        totalFileSize: 'qqtotalfilesize', 
        totalParts: 'qqtotalparts', 
        filename: 'qqfile' 
       } 
      } 
     }); 
    }); 
</script> 

PHP

if ($_FILES["qqfile"]["error"] > 0) 
{ 
    echo "Return Code: " . $_FILES["qqfile"]["error"] . "<br>"; 
} else { 
    $partIndex = $_POST["qqpartindex"]; 
    $fileName = $_POST["qqfile"]; 
    move_uploaded_file($_FILES["qqfile"]["tmp_name"], "data/" . $_FILES["qqfile"]["name"].$partIndex); 
    $result['success'] = true; 
    echo json_encode($result); 

} 

我不知道我哪裏錯了,我已經錯過了。請有人指導我。

+5

你可以使用此https://github.com/blueimp/jQuery-File-Upload它的真棒和工作完美,但很難修改 – 2013-05-08 12:00:31

+0

請保留爭議評論。 – 2013-05-08 12:34:22

+0

此外,那裏如果您打算簡單使用默認值,則不需要定義'paramNames'屬性。 – 2013-05-08 13:32:40

回答

1

問題是,這是優秀的上傳器的一個功能。這些塊是作爲單獨的文件提供的,以防萬一上傳損壞,您將有辦法比較和丟棄無效的塊。如果你只想得到這個文件,你需要的是:

if ($_FILES["qqfile"]["error"] > 0) 
{ 
    echo "Return Code: " . $_FILES["qqfile"]["error"] . "<br>"; 
} else { 
    $partIndex = $_POST["qqpartindex"]; 
    $fileName = $_POST["qqfile"]; 
    move_uploaded_file($_FILES["qqfile"]["tmp_name"], "data/" . $_FILES["qqfile"]["name"].$partIndex); 
    // INSERT CODE HERE TO CHECK THE INTEGRITY OF "data/" . $_FILES["qqfile"]["name"].$partIndex 
    $file = fopen($filename, 'a'); 
    $content = file_get_contents("data/" . $_FILES["qqfile"]["name"].$partIndex); 
    if (fwrite($file, $content)) $result['success'] = true; 
    fclose($file); 
    echo json_encode($result); 
} 

,其中$ filename是你正在上傳的文件的名稱。我會告訴你如何通過這段代碼來獲取它,但是它可能更容易定義它的上游。此外,根據您的上游代碼,它可能會更多的內存效率,在上傳的開始做則fopen,並FCLOSE你的代碼的結尾(例如

$file = FALSE; 
if ($partIndex == 0) $file = fopen("filename"); 

,而不是行$文件= fopen($ filename,'a');但是,在這種情況下,你需要fclose($ file);只有在上傳結束時(或者根本沒有,一旦頁面加載,它就會被關閉)。再次,沒有看到你的代碼的其餘部分,我不知道什麼會在這種特殊情況下最好的工作。

相關問題