2010-09-23 1 views
1

я был успешным в porting over plupload into Codeigniter, но когда пользователь загружает файл, имя файла выходит так: _1, _2, _3 и т.д.Plupload загрузки файла выдает

Что может быть причиной этой ошибки?

Вот мой CodeIgniter Контроллер:

function do_upload($fileName) { 
     // Settings 
      $targetDir = getcwd() . "/uploads/"; 
      $cleanupTargetDir = false; // Remove old files 
      $maxFileAge = 60 * 60; // Temp file age in seconds 
      // 5 minutes execution time 
      @set_time_limit(5 * 60); 
      // usleep(5000); 
      // Get parameters 
      $chunk = isset($_REQUEST["chunk"]) ? $_REQUEST["chunk"] : 0; 
      $chunks = isset($_REQUEST["chunks"]) ? $_REQUEST["chunks"] : 0; 
      // Clean the fileName for security reasons 
      $fileName = preg_replace('/[^\w\._]+/', '', $fileName); 
      // Create target dir 
      if (!file_exists($targetDir)) 
       @mkdir($targetDir); 
      // Remove old temp files 
      if (is_dir($targetDir) && ($dir = opendir($targetDir))) { 
       while (($file = readdir($dir)) !== false) { 
        $filePath = $targetDir . DIRECTORY_SEPARATOR . $file; 
        // Remove temp files if they are older than the max age 
        if (preg_match('/\\.tmp$/', $file) && (filemtime($filePath) < time() - $maxFileAge)) 
         @unlink($filePath); 
       } 
       closedir($dir); 
      } else 
       die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}'); 
      // Look for the content type header 
      if (isset($_SERVER["HTTP_CONTENT_TYPE"])) 
       $contentType = $_SERVER["HTTP_CONTENT_TYPE"]; 
      if (isset($_SERVER["CONTENT_TYPE"])) 
       $contentType = $_SERVER["CONTENT_TYPE"]; 
      if (strpos($contentType, "multipart") !== false) { 
       if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) { 
        // Open temp file 
        $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab"); 
        if ($out) { 
         // Read binary input stream and append it to temp file 
         $in = fopen($_FILES['file']['tmp_name'], "rb"); 
         if ($in) { 
          while ($buff = fread($in, 4096)) 
           fwrite($out, $buff); 
         } else 
          die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); 
         fclose($out); 
         unlink($_FILES['file']['tmp_name']); 
        } else 
         die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}'); 
       } else 
        die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}'); 
      } else { 
       // Open temp file 
       $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab"); 
       if ($out) { 
        // Read binary input stream and append it to temp file 
        $in = fopen("php://input", "rb"); 
        if ($in) { 
         while ($buff = fread($in, 4096)) 
          fwrite($out, $buff); 
        } else 
         die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); 
        fclose($out); 
       } else 
        die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}'); 
      } 
      // Return JSON-RPC response 
      die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'); 
     } 

Внешние ссылки:
CodeIgniter
Plupload

ответ

1

Я знаю, что это старый вопрос, и вы, наверное, догадались - но для кого-то, кто встречается с ним, как я: В вашей функции javascript, которая конфигурирует или связывает любую из функций plupload, вы передаете параметры «вверх» и «файл»? Например: flashuploader.bind ('BeforeUpload', функция (вверх, файл) {// TODO});

«вверх» и «файл» являются членами где-то вдоль линии pluploads - просто не уверен точно, откуда они взялись.

Первоначально я проходил только в массиве «файл», и имя было неопределенным, но «id» существовало - странно. Но добавление «вверх» в список параметров исправило мои проблемы.