2012-01-03 7 views
0

jquery-file-uploadの既存のファイルアップロード構造を交換したいのですが、ファイルシステムの代わりにデータベースを使用するためのドキュメントが見つからないようです。jquery-file-uploadスクリプトはDBで動作しますか?

これが可能であれば、誰でも知っていますか?もしそうなら、どこでドキュメントや例が見つかりますか?

答えて

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($ uploaded_file、$名、$サイズ、$タイプ、$エラー){

が表示されます

データベースクエリを作成し、そのようにファイルを永続化します。基本的には、handle_file_uploadを書き直すだけです。

とにかくこれが役に立ちます。

+0

私はPHPメソッドを使用しているので、そのメソッド(handle_file_upload)を現在のDBソリューションで置き換えるように思えます。 – Paul

+0

こんにちはPaul、 これはまさに正しいことです。既存のソリューションにすぐに接続できます。 これは気にしないで次のステップが機能することを単に信頼する一連の連続ステップです。したがって、既存のDBソリューションをhandle_file_uploadの代わりに置くと、残りのプログラムは気にしなくても動作します。 > – 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

関連する問題