2010-06-16 2 views
4

J'utilise plupload pour télécharger des fichiers sur mon serveur (http://www.plupload.com/index.php), mais je voulais savoir s'il y avait un moyen de créer la variable de chemin de téléchargement.lien de téléchargement de variable de plupload?

Fondamentalement, je dois d'abord sélectionner le dossier du chemin du téléchargement, puis choisir les fichiers en utilisant plupload, puis le télécharger dans le dossier initialement sélectionné.

J'ai essayé plusieurs méthodes, mais je n'arrive pas à transmettre le chemin du dossier variable vers le fichier upload.php. J'utilise la version flash de plupload.

Si quelqu'un pouvait m'aider, ce serait fantastique !! :)

Voici mon plupload jquery:

jQuery.noConflict(); 
jQuery(document).ready(function() { 
    jQuery("#flash_uploader").pluploadQueue({ 
    // General settings 
    runtimes: 'flash', 
    url: '/assets/upload/upload.php', 
    max_file_size: '10mb', 
    chunk_size: '1mb', 
    unique_names: false, 
    // Resize images on clientside if we can 
    resize: {width: 500, height: 350, quality: 100}, 
    // Flash settings 
    flash_swf_url: '/assets/upload/flash/plupload.flash.swf'  
    }); 
}); 

Et voici le fichier upload.php:

<?php 
/** 
* upload.php 
* 
* Copyright 2009, Moxiecode Systems AB 
* Released under GPL License. 
* 
* License: http://www.plupload.com/license 
* Contributing: http://www.plupload.com/contributing 
*/ 

    // HTTP headers for no cache etc 
    header('Content-type: text/plain; charset=UTF-8'); 
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
    header("Cache-Control: no-store, no-cache, must-revalidate"); 
    header("Cache-Control: post-check=0, pre-check=0", false); 
    header("Pragma: no-cache"); 

    // Settings 
$targetDir = $_SERVER['DOCUMENT_ROOT']."/tmp/uploads"; //temp directory <- need these to be variable 
$finalDir = $_SERVER['DOCUMENT_ROOT']."/tmp/uploads2"; //final directory <- need these to be variable 
    $cleanupTargetDir = true; // 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; 
    $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : ''; 

    // 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"}'); 
    } 
    //Moves the file from $targetDir to $finalDir after receiving the final chunk 
    if($chunk == ($chunks-1)){ 
     rename($targetDir . DIRECTORY_SEPARATOR . $fileName, $finalDir . DIRECTORY_SEPARATOR . $fileName); 
    } 

    // Return JSON-RPC response 
    die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'); 
?> 

Répondre

4

Une fois que vous les avez téléchargés dans le répertoire de téléchargement initial, laissez votre script move qu'ils la bonne position.

+0

Je le script upload.php les déplacer dans les téléchargements (temporaire), puis en uploads2 (final) actuellement, mais les utilisateurs doivent sélectionner la destination du dossier dans lequel ils veulent télécharger, avant de télécharger les fichiers. Je ne sais pas comment passer une variable "folder"/select du script plupload dans le fichier upload.php. – SoulieBaby

+0

Créez simplement un élément d'entrée