2012-01-03 45 views

回答

3

您使用的是哪个平台?

PHP? 。净?红宝石?

不知道的细节,让我们看看JQuery的PHP例一般,看看是在

https://github.com/blueimp/jQuery-File-Upload/blob/master/php/index.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 
      ); 
     } 

的最终重要组成部分,为你在这里是

$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 2012-01-03 11:28:00

+0

嗨保罗, 这是完全正确的。您可以直接插入现有解决方案。 这只是一系列连续的步骤,不关心和简单地相信下一步工作。因此,当您将现有的数据库解决方案替换为handle_file_upload时,程序的其余部分将不会在意,它只会起作用。假设你编码正确:> – Jordan 2012-01-03 15:39:00

+0

非常好,谢谢你的帮助:) – Paul 2012-01-03 15:48:14

相关问题