2014-02-20 3 views
1

이 유용한 도구는 RubaXa/jquery.fileapi 이며 파일을 조각으로 만들고 모양을 만듭니다. 그러나 문서에서 업로드 된 부분을 서버에서 처리하는 방법에 대한 정보가 부족합니다. 페이지의 예는 url: './ctrl.php'을 나타내지 만 개발자 페이지에서 해당 내용을 볼 수 없습니다. 지금까지 (아래에서 본) 클라이언트 측 스크립트를 사용했는데 오류가 없었습니다. 파일이 슬라이스되고 몇 가지 게시물 요청이 내 방화 용 콘솔에 나타납니다. 그래서 그것은 작동하는 것 같습니다. 그러나 서버에서 PHP로받은 fileparts를 처리하는 방법은 무엇입니까?RubaXa File API로 처리하는 방법 PHP에서 업로드 된 파일 blob?

수입 스크립트 :

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script> 
    <script> 
     window.FileAPI = { 
       debug: false // debug mode 
      , staticPath: 'jquery.fileapi-master/FileAPI/' // path to *.swf 
     }; 
    </script> 
    <script src="jquery.fileapi-master/FileAPI/FileAPI.min.js"></script> 
    <script src="jquery.fileapi-master/jquery.fileapi.min.js"></script> 

fileuploader의 시작 및 설정 :

jQuery(function ($){ 
     $('#uploader').fileapi({ 
      url: 'stash.php', 
      autoUpload: true, 
      accept: 'video/*', 
      multiple: false, //only single file upload     
      chunkSize: .5 * FileAPI.MB //filesize of the blobs/chunks 
     }); 
    }); 

되는 HTML 파일 업로드 "형태"

<div id="uploader"> 
    <div class="js-fileapi-wrapper"> 
     <input type="file" name="files[]" /> 
    </div> 
    <div data-fileapi="active.show" class="progress"> 
     <div data-fileapi="progress" class="progress__bar"></div> 
    </div> 
</div> 

답변

1

희망이 코드가 도움이 될 것이다. 당신

<?php 
/** 
* FileAPI upload controller (example) 
*/ 


include './FileAPI.class.php'; 


if(!empty($_SERVER['HTTP_ORIGIN'])){ 
    // Enable CORS 
    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); 
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
    header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type'); 
} 


if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){ 
    exit; 
} 


if(strtoupper($_SERVER['REQUEST_METHOD']) == 'POST'){ 
    $files = FileAPI::getFiles(); // Retrieve File List 
    $images = array(); 


    // Fetch all image-info from files list 
    fetchImages($files, $images); 


    // JSONP callback name 
    $jsonp = isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null; 


    // JSON-data for server response 
    $json = array(
      'images' => $images 
     , 'data' => array('_REQUEST' => $_REQUEST, '_FILES' => $files) 
    ); 


    // Server response: "HTTP/1.1 200 OK" 
    FileAPI::makeResponse(array(
      'status' => FileAPI::OK 
     , 'statusText' => 'OK' 
     , 'body' => $json 
    ), $jsonp); 
    exit; 
} 




function fetchImages($files, &$images, $name = 'file'){ 
    if(isset($files['tmp_name'])){ 
     $filename = $files['tmp_name']; 
     list($mime) = explode(';', @mime_content_type($filename)); 

     if(strpos($mime, 'image') !== false){ 
      $size = getimagesize($filename); 
      $base64 = base64_encode(file_get_contents($filename)); 

      $images[$name] = array(
        'width' => $size[0] 
       , 'height' => $size[1] 
       , 'mime' => $mime 
       , 'size' => filesize($filename) 
       , 'dataURL' => 'data:'. $mime .';base64,'. $base64 
      ); 
     } 
    } 
    else { 
     foreach($files as $name => $file){ 
      fetchImages($file, $images, $name); 
     } 
    } 
} 
?>