2013-04-02 99 views
0

我想,因爲我使用jQuery上傳上傳重命名文件。我幾乎已經不遠,這裏是我的UploadHandler.php的重要組成部分:使用輸入文本字段的值重命名php文件?

protected function handle_file_upload($uploaded_file, $name, $size, $type, 
    $error, $index = null, $content_range = null) 
{ 

    $file = new stdClass(); 
    $file = new stdClass(); 

    $name = "Name"; 

    $file->name = /* basename(stripslashes($name)) . */ 
     $this->get_file_name($name, $type, $index, $content_range); 
    $file->size = $this->fix_integer_overflow(intval($size)); 
    $file->type = $type; 
    if ($this->validate($uploaded_file, $file, $error, $index)) { 
     $this->handle_form_data($file, $index); 
     $upload_dir = $this->get_upload_path(); 
     if (!is_dir($upload_dir)) { 
      mkdir($upload_dir, $this->options['mkdir_mode'], true); 
     } 
     $file_path = $this->get_upload_path($file->name); 
     $append_file = $content_range && is_file($file_path) && 
     $file->size > $this->get_file_size($file_path); 
     if ($uploaded_file && is_uploaded_file($uploaded_file)) { 
      // multipart/formdata uploads (POST method uploads) 
      if ($append_file) { 
       file_put_contents(
        $file_path, 
        fopen($uploaded_file, 'r'), 
        FILE_APPEND 
       ); 
      } else { 
       move_uploaded_file($uploaded_file, $file_path); 
      } 
     } else { 
      // Non-multipart uploads (PUT method support) 
      file_put_contents(
       $file_path, 
       fopen('php://input', 'r'), 
       $append_file ? FILE_APPEND : 0 
      ); 
     } 

正如你看到的,與可變$name我已經將它設置爲「姓名」如果我想我所有的uplaoded的偉大的工程文件被稱爲名稱。但我想它讓人們可以在自己的名稱中輸入,並將其重命名該文件到,我基本上只是需要傳遞到我的$name變量。但問題是:我該怎麼做?我試過使用阿賈克斯:

$("#submit").click(function(){ 

var dataString = $("#nama").val(); 

$.ajax({ 
type: "POST", 
url: "server/php/index.php", 
data: { 'dataString': dataString }, 
cache: false, 
success: function() 
    { 
     alert("Order Submitted"); 
    } 
}); 

但這根本沒有做任何事情。還有這裏的html索引文件,以防萬一:幫助:

  <!DOCTYPE HTML> 
      <!-- 
      /* 
      * jQuery File Upload Plugin Demo 7.4 
      * https://github.com/blueimp/jQuery-File-Upload 
      * 
      * Copyright 2010, Sebastian Tschan 
      * https://blueimp.net 
      * 
      * Licensed under the MIT license: 
      * http://www.opensource.org/licenses/MIT 
      */ 
      --> 
      <html lang="en"> 
      <head> 
      <!-- Force latest IE rendering engine or ChromeFrame if installed --> 
      <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]--> 
      <meta charset="utf-8"> 
      <title>Senior Slide Show</title> 
      <meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bar and preview images for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads."> 
      <meta name="viewport" content="width=device-width"> 
      <!-- Bootstrap CSS Toolkit styles --> 
      <link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap.min.css"> 
      <!-- Generic page styles --> 
      <link rel="stylesheet" href="css/style.css"> 
      <!-- Bootstrap styles for responsive website layout, supporting different screen sizes --> 
      <link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap-responsive.min.css"> 
      <!-- Bootstrap CSS fixes for IE6 --> 
      <!--[if lt IE 7]><link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap-ie6.min.css"><![endif]--> 
      <!-- Bootstrap Image Gallery styles --> 
      <link rel="stylesheet" href="http://blueimp.github.com/Bootstrap-Image-Gallery/css/bootstrap-image-gallery.min.css"> 
      <!-- CSS to style the file input field as button and adjust the Bootstrap progress bars --> 
      <link rel="stylesheet" href="css/jquery.fileupload-ui.css"> 
      <!-- CSS adjustments for browsers with JavaScript disabled --> 
      <noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript> 
      <!-- Shim to make HTML5 elements usable in older Internet Explorer versions --> 
      <!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--> 
      </head> 
      <body> 
      <div class="navbar navbar-fixed-top"> 
       <div class="navbar-inner"> 
        <div class="container"> 
         <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> 
          <span class="icon-bar"></span> 
          <span class="icon-bar"></span> 
          <span class="icon-bar"></span> 
         </a> 
         <a class="brand" href="http://www.dpnews.org">Dos Pueblos Senior Slide Show</a> 
         <div class="nav-collapse"> 
          <!--<ul class="nav"> 
           <li class="active"><a href="http://blueimp.github.com/jQuery-File-Upload/">Demo</a></li> 
           <li><a href="https://github.com/blueimp/jQuery-File-Upload#download">Download</a></li> 
           <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li> 
           <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li> 
           <li><a href="https://github.com/blueimp/jQuery-File-Upload#support">Support</a></li> 
           <li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li> 
          </ul>--> 
         </div> 
        </div> 
       </div> 
      </div> 
      <div class="container"> 
       <div class="page-header"> 
        <h1>Dos Pueblos Senior Slide Show 2013Uploader</h1> 
       </div> 
       <blockquote> 
        <p>Hello everyone! Welcome to the Senior Slide Show uploader.<br> 
        To use this uploader, all you have to do is click the "Add Files" button, and pick out your video/image. Maximum file size is 2GB.<br> 
        After that, just click the "Start" button next to the queued file. It will go right to the Senior Slide Show.</p> 
       </blockquote> 
       <br> 
       <!-- The file upload form used as target for the file upload widget --> 
       <form id="fileupload" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data"> 
        <!-- Redirect browsers with JavaScript disabled to the origin page --> 
        <noscript><input type="hidden" name="redirect" value="http://blueimp.github.com/jQuery-File-Upload/"></noscript> 
        <input type="hidden" name="MAX_FILE_SIZE" value="3000000000" /> 
        <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload --> 
        <div class="row fileupload-buttonbar"> 
         <div class="span7"> 
          <!-- The fileinput-button span is used to style the file input field as button --> 
          <span class="btn btn-success fileinput-button"> 
           <i class="icon-plus icon-white"></i> 
           <span>Add files...</span> 
           <input type="file" name="files[]" multiple> 
          </span> 
          <button type="submit" class="btn btn-primary start"> 
           <i class="icon-upload icon-white"></i> 
           <span>Start upload</span> 
          </button> 
          <button type="reset" class="btn btn-warning cancel"> 
           <i class="icon-ban-circle icon-white"></i> 
           <span>Cancel upload</span> 
          </button> 
          <!--<button type="button" class="btn btn-danger delete"> 
           <i class="icon-trash icon-white"></i> 
           <span>Delete</span> 
          </button>--> 
          <input type="checkbox" class="toggle"> 
         </div> 
         <!-- The global progress information --> 
         <div class="span5 fileupload-progress fade"> 
          <!-- The global progress bar --> 
          <div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100"> 
           <div class="bar" style="width:0%;"></div> 
          </div> 
          <!-- The extended global progress information --> 
          <div class="progress-extended">&nbsp;</div> 
         </div> 
        </div> 
        <!-- The loading indicator is shown during file processing --> 
        <div class="fileupload-loading"></div> 
        <br> 
        <!-- The table listing the files available for upload/download --> 
        <table role="presentation" class="table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table> 
       </form> 
       <br> 
       <!--<div class="well"> 
        <h3>Demo Notes</h3> 
        <ul> 
         <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li> 
         <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li> 
         <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li> 
         <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage with Google Chrome, Mozilla Firefox and Apple Safari.</li> 
         <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li> 
         <li>Built with Twitter's <a href="http://twitter.github.com/bootstrap/">Bootstrap</a> toolkit and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li> 
        </ul> 
       </div>--> 
      </div> 
      <!-- modal-gallery is the modal dialog used for the image gallery --> 
      <div id="modal-gallery" class="modal modal-gallery hide fade" data-filter=":odd" tabindex="-1"> 
       <div class="modal-header"> 
        <a class="close" data-dismiss="modal">&times;</a> 
        <h3 class="modal-title"></h3> 
       </div> 
       <div class="modal-body"><div class="modal-image"></div></div> 
       <div class="modal-footer"> 
        <a class="btn modal-download" target="_blank"> 
         <i class="icon-download"></i> 
         <span>Download</span> 
        </a> 
        <a class="btn btn-success modal-play modal-slideshow" data-slideshow="5000"> 
         <i class="icon-play icon-white"></i> 
         <span>Slideshow</span> 
        </a> 
        <a class="btn btn-info modal-prev"> 
         <i class="icon-arrow-left icon-white"></i> 
         <span>Previous</span> 
        </a> 
        <a class="btn btn-primary modal-next"> 
         <span>Next</span> 
         <i class="icon-arrow-right icon-white"></i> 
        </a> 
       </div> 
      </div> 
      <!-- The template to display files available for upload --> 
      <script id="template-upload" type="text/x-tmpl"> 
      {% for (var i=0, file; file=o.files[i]; i++) { %} 
       <tr class="template-upload fade"> 
        <td class="preview"><span class="fade"></span></td> 
        <td class="name"><span>{%=file.name%}</span></td> 
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td> 
        {% if (file.error) { %} 
         <td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td> 
        {% } else if (o.files.valid && !i) { %} 
         <td> 
          <div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div> 
         </td> 
         <td>{% if (!o.options.autoUpload) { %} 
          <button class="btn btn-primary start"> 
           <i class="icon-upload icon-white"></i> 
           <span>Start</span> 
          </button> 
         {% } %}</td> 
        {% } else { %} 
         <td colspan="2"></td> 
        {% } %} 
        <td>{% if (!i) { %} 
         <button class="btn btn-warning cancel"> 
          <i class="icon-ban-circle icon-white"></i> 
          <span>Cancel</span> 
         </button> 
        {% } %}</td> 
       </tr> 
      {% } %} 
      </script> 
      <!-- The template to display files available for download --> 
      <script id="template-download" type="text/x-tmpl"> 
      {% for (var i=0, file; file=o.files[i]; i++) { %} 
       <tr class="template-download fade"> 
        {% if (file.error) { %} 
         <td></td> 
         <td class="name"><span>{%=file.name%}</span></td> 
         <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td> 
         <td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td> 
        {% } else { %} 
         <td class="preview">{% if (file.thumbnail_url) { %} 
          <a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a> 
         {% } %}</td> 
         <td class="name"> 
          <a href="{%=file.url%}" title="{%=file.name%}" data-gallery="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a> 
         </td> 
         <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td> 
         <td colspan="2"></td> 
        {% } %} 
        <td> 
         <!--<button class="btn btn-danger delete" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}"{% if (file.delete_with_credentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}> 
          <i class="icon-trash icon-white"></i> 
          <span>Delete</span> 
         </button>--> 
         <input type="checkbox" name="delete" value="1" class="toggle"> 
        </td> 
       </tr> 
      {% } %} 
      </script> 
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
      <!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included --> 
      <script src="js/vendor/jquery.ui.widget.js"></script> 
      <!-- The Templates plugin is included to render the upload/download listings --> 
      <script src="http://blueimp.github.com/JavaScript-Templates/tmpl.min.js"></script> 
      <!-- The Load Image plugin is included for the preview images and image resizing functionality --> 
      <script src="http://blueimp.github.com/JavaScript-Load-Image/load-image.min.js"></script> 
      <!-- The Canvas to Blob plugin is included for image resizing functionality --> 
      <script src="http://blueimp.github.com/JavaScript-Canvas-to-Blob/canvas-to-blob.min.js"></script> 
      <!-- Bootstrap JS and Bootstrap Image Gallery are not required, but included for the demo --> 
      <script src="http://blueimp.github.com/cdn/js/bootstrap.min.js"></script> 
      <script src="http://blueimp.github.com/Bootstrap-Image-Gallery/js/bootstrap-image-gallery.min.js"></script> 
      <!-- The Iframe Transport is required for browsers without support for XHR file uploads --> 
      <script src="js/jquery.iframe-transport.js"></script> 
      <!-- The basic File Upload plugin --> 
      <script src="js/jquery.fileupload.js"></script> 
      <!-- The File Upload file processing plugin --> 
      <script src="js/jquery.fileupload-fp.js"></script> 
      <!-- The File Upload user interface plugin --> 
      <script src="js/jquery.fileupload-ui.js"></script> 
      <!-- The main application script --> 
      <script src="js/main.js"></script> 
      <!-- The XDomainRequest Transport is included for cross-domain file deletion for IE8+ --> 
      <!--[if gte IE 8]><script src="js/cors/jquery.xdr-transport.js"></script><![endif]--> 
      </body> 
      </html> 

任何人都可以幫忙嗎?

+0

您能否提供給我們文件上傳庫的鏈接? – rab

+0

我添加了完整的html索引代碼 – user2230755

回答

0

..ok,我不知道如果我看了你的代碼很好,但自從$名字被宣佈在服務器端,怎麼樣聲明一個空的變量,然後通過選擇(定義)值到它通過Ajax客戶端。然後用新的變量值聲明名稱作爲變量變量($$ name)。這會起作用嗎? (http://php.net/manual/en/language.variables.variable.php

..well,如果你可以通過GET變量傳遞的值,你可以做這樣的事情:

發起Ajax調用:

function passname() 
{ 
    var xmlhttp; 

    if(window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 

    else { xmllhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 

    xmlhttp.onreadystatechange=function() 
    { 
     if(xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     var newname = document.getElementById("chosen_name").value; 
     xmlhttp.open("GET","receive_newname.php?value="+newname, true); 
     xmlhttp.send() 
     } 
    } 

} 

..一個很明顯你需要讓服務器在接收PHP文件receive_newname.php(或在您的情況下,它可能是在你有相同的PHP服務器文件),您收到$ _GET [「值」]並將其分配給$ name變量。

我覺得這可能是工作:)雖然沒有測試。

+0

感謝您的回答,我不擅長ajax,如何在不刷新頁面的情況下做到這一點? – user2230755

+0

...我想你可以將onClick事件添加到任何東西(對不起,我沒有閱讀你的HTML代碼),並做一些這樣的事情:onclick =「passname()」 – Milan

0

在你server/php/index.php文件你從AJAX調用,只需撥打$_POST['dataString']讓你的用戶輸入的是什麼;)

換句話說,你應該不會影響你的$name變量;

$name = $_POST['dataString'];

+0

謝謝大家,我終於解決了!事實證明,我不必使用ajax ..只需在我的PHHP腳本中調用GET方法來寫入一個外部.txt文件,並打開我的$ name變量的txt文件。感謝所有的幫助! – user2230755