2015-10-06 166 views
0

我目前正在爲一小組人員下載文件&手冊製作一個小門戶網站。在網站中,我也希望人們能夠上傳文件,所以我使用Mini Ajax File Upload。在上傳表單中,我想要一個下拉框,以便人們可以選擇他們想要上傳文件的位置。我只是無法確定如何執行此下拉菜單來更改上傳目錄。迷你Ajax文件上傳器動態上傳路徑

上傳目錄被設置在這裏:

if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){ 
     echo '{"status":"success"}'; 
     exit; 
    } 

回答

0

我已經找到了解決辦法和改進它,所以它做什麼,我想它。這是腳本,以防其他人想要它。請注意,這暴露了你的服務器的目錄結構,它也有一個shell_exec wget功能,使你可以注入。這本身並不安全/安全,您需要增加安全性或自行承擔風險進行公開使用。

該腳本將讓用戶選擇與該腳本相同的目錄中的文件夾上傳文件,他們也可以輸入文件的URL並讓服務器下載它(在Linux服務器上)。

  <?php 
    if ($_POST['variable'] == '') 
    { 
    $variable = './'; // default folder 
    } 
    else 
    { 
    $variable = $_POST['variable'] ; 
    } 
    $folder = $variable; 
    $uploadpath = "$folder/";  
    $max_size = 2000000;   
    $alwidth = 90000;    
    $alheight = 90000;   
    $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'jpeg', 'png', 'psd', 'tga', 'tif', '7z', 'bz', 'gz', 'rar', 'tar', 'zip', 'aac', 'flac', 'mid', 'midi', 'mp3', 'ogg', 'wma', 'wav', 'c', 'class', 'cpp', 'css', 'erb', 'htm', 'html', 'java', 'js', 'php', 'pl', 'py', 'rb', 'xhtml', 'xml', 'accdb', 'db', 'dbf', 'mdb', 'pdb', 'sql', 'csv', 'doc', 'docx', 'odt', 'pdf', 'xls', 'xlsx', 'ppt', 'app', 'bat', 'com', 'exe', 'jar', 'msi', 'vb', 'eot', 'otf', 'ttf', 'woff', 'gam', 'nes', 'rom', 'sav', 'box', 'deb', 'rpm', 'bat', 'cmd', 'sh', 'cfg', 'ini', 'log', 'md', 'rtf', 'txt', 'ai', 'drw', 'eps', 'ps', 'svg', 'avi', 'flv', 'mkv', 'mov', 'mp4', 'mpg', 'ogv', 'webm', 'wmv', 'swf', 'bak', 'msg', 'blank'); 

    $wgeturl = $_POST['wget-url']; 
    $command = "wget -P $uploadpath $wgeturl"; 
    $output = shell_exec($command);   

    if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) { 
     $uploadpath = $uploadpath . basename($_FILES['fileup']['name']);  
     $sepext = explode('.', strtolower($_FILES['fileup']['name'])); 
     $type = end($sepext); 
     list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);  
     $err = '';   


     if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> not has the allowed extension type.'; 
     if($_FILES['fileup']['size'] > $max_size*1000000) $err .= '<br/>Maximum file size must be: '. $max_size. ' KB.'; 
     if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>The maximum Width x Height must be: '. $alwidth. ' x '. $alheight; 


     if($err == '') { 
     if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { 
      echo 'File: <b>'. basename($_FILES['fileup']['name']). '</b> successfully uploaded:'; 
      echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>'; 
      echo '<br />Size: <b>'. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .'</b> KB'; 
      if(isset($width) && isset($height)) echo '<br/>Image Width x Height: '. $width. ' x '. $height; 
      echo '<br/><br/>Image address: <b>http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '\\/').'/'.$uploadpath.'</b>'; 
     } 
     else echo '<b>Unable to upload the file.</b>'; 
     } 
     else echo $err; 
    } 
    ?> 
    <div style="margin:1em auto; width:333px; text-align:center;"> 

    </div> 
    <div style="margin:1em auto; width:333px; text-align:center;"> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> 
    <b>Upload from URL:</b> <input type="text" name="wget-url" value="URL to file"><br\> 
    <input type="file" name="fileup" /><br/> 
    <select name="variable" /> 
    <option value="" selected="selected">Select a folder</option> 


    <form name="input" action="upload.php" method="post" onchange="this.form.submit()"> 

    <?php 
    $dirs = glob("*", GLOB_ONLYDIR); 
    foreach($dirs as $val){ 
    echo '<option value="'.$val.'">'.$val."</option>\n"; 
    } 
    ?> 
    </select> 
     <button type="submit" class="btn btn-primary btn-lg" name='submit' value="Upload" />Upload</button> 
    </div> 
    </form>