【问题标题】:Mini Ajax File Uploader Dynamic Upload PathMini Ajax File Uploader 动态上传路径
【发布时间】:2015-10-06 06:53:08
【问题描述】:

我目前正在制作一个小型门户网站,供一小群人下载文件和手册。在该站点中,我还希望人们能够上传文件,所以我使用Mini Ajax File Upload。在上传表单上,我希望有一个下拉框,以便人们可以选择他们想要上传文件的位置。我只是无法弄清楚如何执行此下拉菜单来更改上传目录。

这里设置上传目录:

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

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    我找到了一个解决方案并对其进行了修改,使其能够满足我的要求。这是脚本,以防其他人想要它。请注意,这会暴露您服务器的目录结构,并且它还有一个 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>
    

    【讨论】:

      猜你喜欢
      • 2016-03-20
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2015-06-05
      • 2019-02-06
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      相关资源
      最近更新 更多