2012-01-03 2 views

답변

3

어떤 플랫폼을 사용하고 있습니까?

PHP? .그물? 루비? 구체적인 내용을 모른 채

는 일반적으로 해당 파일에서 볼

https://github.com/blueimp/jQuery-File-Upload/blob/master/php/index.php 

에 무슨 일이 일어나고 있는지 볼의가 JQuery와 PHP 예를 살펴 보자

$upload_handler = new UploadHandler(); 

header('Pragma: no-cache'); 
header('Cache-Control: private, no-cache'); 
header('Content-Disposition: inline; filename="files.json"'); 
header('X-Content-Type-Options: nosniff'); 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE'); 
header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size'); 

switch ($_SERVER['REQUEST_METHOD']) { 
    case 'OPTIONS': 
     break; 
    case 'HEAD': 
    case 'GET': 
     $upload_handler->get(); 
     break; 
    case 'POST': 
     $upload_handler->post(); 
     break; 
    case 'DELETE': 
     $upload_handler->delete(); 
     break; 
    default: 
     header('HTTP/1.1 405 Method Not Allowed'); 
} 

찾는 경우에 'POST'

다음을 포함합니다.

$upload_handler->post(); 

파일이 게시되면 게시 루틴을 봅시다 [이 파일은 RESTFul 스타일의 파일을 처리하기위한 용도로만 사용됩니다 ... 적절한 동작을하는 적절한 동사, GET 파일 가져 오기, 삭제 파일 삭제, POST 게시물 파일.]

는 그래서 여기 당신을 위해

public function post() { 
     if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') { 
      return $this->delete(); 
     } 
     $upload = isset($_FILES[$this->options['param_name']]) ? 
      $_FILES[$this->options['param_name']] : null; 
     $info = array(); 
     if ($upload && is_array($upload['tmp_name'])) { 
      foreach ($upload['tmp_name'] as $index => $value) { 
       $info[] = $this->handle_file_upload(
        $upload['tmp_name'][$index], 
        isset($_SERVER['HTTP_X_FILE_NAME']) ? 
         $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index], 
        isset($_SERVER['HTTP_X_FILE_SIZE']) ? 
         $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index], 
        isset($_SERVER['HTTP_X_FILE_TYPE']) ? 
         $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index], 
        $upload['error'][$index] 
       ); 
      } 
     } elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) { 
      $info[] = $this->handle_file_upload(
       isset($upload['tmp_name']) ? $upload['tmp_name'] : null, 
       isset($_SERVER['HTTP_X_FILE_NAME']) ? 
        $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ? 
         isset($upload['name']) : null), 
       isset($_SERVER['HTTP_X_FILE_SIZE']) ? 
        $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ? 
         isset($upload['size']) : null), 
       isset($_SERVER['HTTP_X_FILE_TYPE']) ? 
        $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ? 
         isset($upload['type']) : null), 
       isset($upload['error']) ? $upload['error'] : null 
      ); 
     } 

궁극적으로 중요한 부분 그것은 handle_file_upload를 호출

$this->handle_file_upload(
        $upload['tmp_name'][$index], 
        isset($_SERVER['HTTP_X_FILE_NAME']) ? 
         $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index], 
        isset($_SERVER['HTTP_X_FILE_SIZE']) ? 
         $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index], 
        isset($_SERVER['HTTP_X_FILE_TYPE']) ? 
         $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index], 
        $upload['error'][$index] 
       ); 

지금 그 다음 관련 비트를 살펴 보자. 이제이 모든 것이 어떻게 작동하는지 주목하십시오. 파일이 업로드되고 동사가 무엇인지 가져오고, 게시하고, 삭제합니다. 데이터베이스가 있는지 또는 다음에해야할 일만 신경 쓰지 않는지 상관하지 않습니다. 그것은 게시물 게시물을 누른 다음 수치 헤이 내가 handle_file_upload 전화해야합니다. 이제 handle_file_upload는 의미 상 블랙 박스입니다. 일부 데이터베이스 로직을 사용하여 handle_file_upload를 처리하는 다른 데이터베이스로 대체 할 수 있습니다. 이 기능 handle_file_upload를 보면 당신은 그래서 그 매개 변수를 사용하고 사용

개인 기능 handle_file_upload ($ uploaded_file, $ 이름, $ 크기, $ 유형, $ 오류) {

를 볼 수 있습니다

데이터베이스 쿼리를 만들고 그런 식으로 파일을 유지합니다. 기본적으로 handle_file_upload를 다시 작성하십시오.

어쨌든 도움이 되길 바랍니다.

+0

저는 PHP 메소드를 사용하고 있습니다. 따라서 현재의 DB 솔루션으로 그 메소드 (handle_file_upload)를 대체하는 것처럼 들립니다. – Paul

+0

Hi Paul, 정확합니다.기존 솔루션에 바로 연결할 수 있습니다. 다음 단계가 작동한다는 것을 신경 쓰지 않고 단순히 신뢰하는 일련의 연속 단계 일뿐입니다. 따라서 handle_file_upload 위치에 기존 DB 솔루션을 넣으면 나머지 프로그램은 신경 쓰지 않고 작동하게됩니다. 당신이 올바르게 코딩 가정 :> – Jordan

+0

우수, 도움 주셔서 감사합니다 :) – Paul

1

파일 저장을위한 서버 측 부분은 jQuery 파일 업로드 프로젝트와 독립적입니다. 다음은 PHP를 사용하여 업로드 된 파일을 MySQL 데이터베이스에 저장하는 좋은 예입니다.

http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx

+0

davidethell : handle_file_upload 메소드의 일부로 내 DB에 이미지를 업로드하기 위해 기존 코드를 플러그인 할 수있는 것 같습니다. – Paul

관련 문제