Uploadseite bauen ?

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Uploadseite bauen ?

    Ich bin jez nit grade der PHP kenner ..

    Ich würde gerne wissen wie man eine Uploadseite baut auf der man auswählen kann wie viele Datein man auswählen + hochladen will ...

    sowas hab ich noch nit wirklich gefunden ...

    hab da an so ne liste gedacht .. wie das auch imma heißt ..

    vieleicht: switchdownlist oder so ^^ also mit nem Pfeil und nem feld daneben xD
    __________
    |^| |
    Sowas oda so ähnlich xD
    ☺☺☺☺☺☻☻☻☻☻
  • Aber entweder bin ich zu doof zum lesen;) oda da steht nicht wie man mit einer auswahlliste auswählen kann wieviel man hochladen will ...

    Naja aber danke für deine Mühe
  • Mehrfach-Upload geht nicht

    Hi,

    also meiner Meinung nach geht das gar nicht mit "Boardmitteln". Es ist kein Problem, einen Upload per PHP zu realisieren, jedoch nur für genau eine Datei.

    Daher habe ich mal den Umweg programmiert, dass ein zip-File hochgeladen werden konnte, die dann serverseitig entpackt wurde - dummerweise habe ich dann festgestellt, dass mein Provider das zip-Modul für PHP nicht installiert hatte :depp:

    Mulit-File-Uploads hat z.B. web.de durch ein eigenes Browserplugin realisiert - ohne so eine aufwendige Lösung wird das nicht funktionieren.

    Grüße,
    Halox
  • Na dann ... danke für die bemühungen ...

    Ich hatte schonmal ne uploadseite mit mehreren Uploadfeldern gefunden nur halt bestimmte anzahl ..
    Naja ich mach das so wie vorher wenn jemand was uploaden will soll er über ftp machen :cool:
  • Upload für eine Datei

    Hi,
    Ich hab hier ein script (php) welches eine Datei Problemlos uploaden kann.
    (Hab es selbst bei meinem projekt verwendet.... )
    Wie man jetzt aber mehrere Dateien auswählen und uppn kann und ob das mit php überhaupt realisierbar ist, ist ne andere frage :D

    Hochladen einer Datei

    PHP-Quellcode

    1. <body>
    2. <form action="upload.php" method="post" enctype="multipart/form-data">
    3. <input type="file" name="datei" />
    4. <input type="submit" name="upload" value="Upload" />
    5. </form>
    6. <?php
    7. /* (c) Andreas Brunner 2007
    8. Damit der File-Upload funktioniert, muss man unbedingt darauf achten, dass für das Upload-Verzeichnis die Read-, Write- und Execute-Rechte vergeben sind (also erlaubt sind; 0777). Sonst kann das Skript die Datei(en) nicht hochladen. Beim Root-Verzeichnis kann man das normalerweise vernachlässigen.
    9. */
    10. if(isset($_POST['upload']))
    11. {
    12. $max_file_size = 61440; // 60KB, Maximale Dateigröße, optional
    13. if(is_uploaded_file($_FILES['datei']['tmp_name']))
    14. // "datei" steht für "name" beim <input...name="...." />
    15. // "tmp_name" sollte nicht ersetzt werden, es beinhaltet den temporären
    16. // Namen der Datei auf dem Server
    17. {
    18. if($_FILES['datei']['size'] <= $max_file_size)
    19. {
    20. // Uploadverzeichnis: Nicht immer einfach ./uploads/ o.ä. nehmen. Bei meinem
    21. // Projekt war das z.B. /data/www/virtservers/..., beim qwws steht es glaub
    22. // ich irgendwo im File-Upload-Bereich,
    23. // sollte es nicht dort stehen, sieht man es bei einem Fehler, z.B. unable to
    24. // upload file in [PFAD], etc., also wählen Sie irgendein Verzeichnis und
    25. // dann sehen Sie das richtige in der Fehlermeldung. Es ist vom Provider
    26. // abhängig. Bei manchen genügt es auch einfach nur ./uploads/ zu schreiben.
    27. // Wird kein Upload-Directory angegeben, wird das File im Root-Directory
    28. // abgelegt
    29. $upload_dir = "./test/";
    30. move_uploaded_file($_FILES['datei']['tmp_name'],
    31. $upload_dir.$_FILES['datei']['name']);
    32. // in $_FILES['datei']['name'] steht der Originalname der Datei auf dem
    33. // Client-Pc, so wird die Datei dann auch auf dem Server heißen
    34. // es kann auch ein fixer Name vergeben werden, aber unbedingt mit der
    35. // Dateiendung! z.B. $filename = "bild1.jpg";
    36. // move_uploaded_file($_FILES['datei']['tmp_name'], $upload_dir.$filename);
    37. $bildlink = "./test/".$_FILES['datei']['name'];
    38. // In dieser Variable ist der Bildlink enthalten
    39. echo '<p>Upload erfolgreich!</p>';
    40. }
    41. else
    42. {
    43. echo "<p>Datei zu groß!</p>";
    44. }
    45. }
    46. else
    47. {
    48. echo "<p>Keine Datei ausgewählt!</p>";
    49. }
    50. }
    51. ?>
    52. </body>
    Alles anzeigen


    greez
  • Das lässt sich eigentlich "relativ" leicht realisieren.
    1. Du baust eine Formularseite auf der, der Benutzer, die anzahl auswält wie viele Dateien er hochladen möchte.
    2. Als nächstes hast du eine php-Seite die über eine Schleife n-viele Formularfelder erstellt.

    HTML-Quellcode

    1. <?php $anzahl = $_POST['anzahl'] ?>
    2. <form action="upload_files.php" method="post" enctype="multipart/form-data">
    3. <?php for($nr=0; $nr<$anzahl; $nr++){?>
    4. <input name="datei<?php echo $nr ?>" type="file" size="50" maxlength="100000" accept="text/*">
    5. <?php } ?>
    6. <input type="hidden" name="anzahl" value="<?php echo $anzahl ?>">
    7. </form>

    3. als letztes verwendest du dann eine Funktion die du mit einem Parameter (der FileNummer $nr) aufrufst und wieder über eine Schleife verwendest.

    PHP-Quellcode

    1. <?php
    2. $anzahl = $_POST['anzahl'];
    3. function upload($nr){
    4. if(is_uploaded_file($_FILES['datei'.$nr]['tmp_name'])){
    5. $upload_dir = "./test/";
    6. move_uploaded_file($_FILES['datei'.$nr]['tmp_name'], $upload_dir.$_FILES['datei'.$nr]['name']);
    7. return true;
    8. }else{return false;}
    9. }
    10. for($nr=0; $nr < $anzahl; $nr++){
    11. upload($nr);
    12. }
    13. ?>
    Alles anzeigen


    Falls du noch weitere Hilfe brauchst melde dich.

    Gruß
    Markus
  • Um mehrere Dateien hochzuladen benutze ich immer folgendes Script:

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <!-- Include the javascript -->
    4. <script type="text/javascript">
    5. function MultiSelector( list_target, max ){
    6. // Where to write the list
    7. this.list_target = list_target;
    8. // How many elements?
    9. this.count = 0;
    10. // How many elements?
    11. this.id = 0;
    12. // Is there a maximum?
    13. if( max ){
    14. this.max = max;
    15. } else {
    16. this.max = -1;
    17. };
    18. /**
    19. * Add a new file input element
    20. */
    21. this.addElement = function( element ){
    22. // Make sure it's a file input element
    23. if( element.tagName == 'INPUT' && element.type == 'file' ){
    24. // Element name -- what number am I?
    25. element.name = 'file_' + this.id++;
    26. // Add reference to this object
    27. element.multi_selector = this;
    28. // What to do when a file is selected
    29. element.onchange = function(){
    30. // New file input
    31. var new_element = document.createElement( 'input' );
    32. new_element.type = 'file';
    33. // Add new element
    34. this.parentNode.insertBefore( new_element, this );
    35. // Apply 'update' to element
    36. this.multi_selector.addElement( new_element );
    37. // Update list
    38. this.multi_selector.addListRow( this );
    39. // Hide this: we can't use display:none because Safari doesn't like it
    40. this.style.position = 'absolute';
    41. this.style.left = '-1000px';
    42. };
    43. // If we've reached maximum number, disable input element
    44. if( this.max != -1 && this.count >= this.max ){
    45. element.disabled = true;
    46. };
    47. // File element counter
    48. this.count++;
    49. // Most recent element
    50. this.current_element = element;
    51. } else {
    52. // This can only be applied to file input elements!
    53. alert( 'Error: not a file input element' );
    54. };
    55. };
    56. /**
    57. * Add a new row to the list of files
    58. */
    59. this.addListRow = function( element ){
    60. // Row div
    61. var new_row = document.createElement( 'div' );
    62. // Delete button
    63. var new_row_button = document.createElement( 'input' );
    64. new_row_button.type = 'button';
    65. new_row_button.value = 'Delete';
    66. // References
    67. new_row.element = element;
    68. // Delete function
    69. new_row_button.onclick= function(){
    70. // Remove element from form
    71. this.parentNode.element.parentNode.removeChild( this.parentNode.element );
    72. // Remove this row from the list
    73. this.parentNode.parentNode.removeChild( this.parentNode );
    74. // Decrement counter
    75. this.parentNode.element.multi_selector.count--;
    76. // Re-enable input element (if it's disabled)
    77. this.parentNode.element.multi_selector.current_element.disabled = false;
    78. // Appease Safari
    79. // without it Safari wants to reload the browser window
    80. // which nixes your already queued uploads
    81. return false;
    82. };
    83. // Set row value
    84. new_row.innerHTML = element.value;
    85. // Add button
    86. new_row.appendChild( new_row_button );
    87. // Add it to the list
    88. this.list_target.appendChild( new_row );
    89. };
    90. };
    91. </script>
    92. </head>
    93. <body>
    94. <form enctype="multipart/form-data" action="your_script_here.script" method = "post">
    95. <input id="my_file_element" type="file" name="file_1" >
    96. <input type="submit">
    97. </form>
    98. Files:
    99. <div id="files_list"></div>
    100. <script type="text/javascript">
    101. var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
    102. multi_selector.addElement( document.getElementById( 'my_file_element' ) );
    103. </script>
    104. </body>
    105. </html>
    Alles anzeigen


    Damit entfällt die Auswahl für die Anzahl der Dateien, auf der Zielseite muss man dann nur noch über $_FILES loopen.

    Das ganze Javascript (also nur der erste, grosse Block) lässt sich natürlich auch in eine eigene .js Datei auslagern und folgendermassen einbinden:

    HTML-Quellcode

    1. <script type="text/javascript" src="dateiname.js"></script>