Philipp Lenz: Upload via select

Hallo,

meine Idee war, eine multiple Select Box zu basteln, die Dateien kann ich schön hinzufügen, jedoch um eine File upzuloaden, benötige ich ja den button type "file", und somit bleibe ich hängen.

Hier einfach mal mein Script zum Verständniss:
-------------------------------------------
<head>
<script language="JavaScript">
function addfile() {
if(document.upload.new_file.value != "")  {
var file;
 NeuerEintrag = new Option(document.upload.new_file.value,document.upload.new_file.value,false,true);
 document.upload.elements["file[]"].options[document.upload.elements["file[]"].length] = NeuerEintrag;
 document.upload.new_file.value = '';
 }
}
function Loeschen() {
 document.upload.elements["file[]"].options[document.upload.elements["file[]"].length-1] = null;
}
</script>
<body>
<form enctype=multipart/form-data method=post action=server.php target=right name=upload>
<input type="hidden" name="upload" value="1">
<input type="hidden" name="server" value="$server">
<input type="hidden" name="PHPSESSID" value="$PHPSESSID">
<fieldset>
<legend>Actions</legend>
<input type="file" name="new_file" class="textbox">
<input type="button" value="Add File to List" onClick="addfile()" class="box">
<br />
<select name="file[]" size="8" style="width:100%; height:200" class="box" multiple>
</select>
<button type="button" name="reset" class="box" onClick="Loeschen()">Remove sel.</button>
  
<select name="mode" class="dropdown">
<option value="FTP_ASCII">ASCII</option>
<option value="FTP_BINARY">BINARY</option>
</select><button type="button" name="upload" class="box" onClick="self.document.upload.submit()">Upload ..</button>
</fieldset>
</form>
</body>
----------------------------------------------------------------

So, dieses SCript sollte mir den Upload ermöglichen, wie schon oben beschrieben, bleibe ich ja beim absenden hängen, der File Name kommt ja hübsch im Array 'file' an und kann ich auch verarbeiten, aber es wird kein HTTP-Upload gestartet.

Also müsste ich wohl dem JScript mitteilen, das beim Absenden ein neuer Typ zugewiesen wird, also in der Art: Option -> File.

Wie kann man sowas in JS realisieren?

Mfg
Philipp Lenz

  1. Hi,

    um eine File upzuloaden, benötige ich ja den button type "file",

    exakt. Und es hat seine (Sicherheits-)Gründe, dass eben dieser nicht (höchstens minimal per CSS, aber keinesfalls mit value-Attribut oder gar JavaScript) beeinflusst werden kann.

    und somit bleibe ich hängen.

    Nein. <input type="file"> und gut is'. Dieser ist _nötig_ für einen Dateiupload, und die manuelle Auswahl der Datei _darf_ dem User nicht abgenommen werden können.

    Also müsste ich wohl dem JScript mitteilen, das beim Absenden ein neuer Typ zugewiesen wird, also in der Art: Option -> File.
    Wie kann man sowas in JS realisieren?

    Das ist selbstverständlich völlig ausgeschlossen. Oder möchtest Du, dass mit einem kleinen Trick und evtl. einem automatischen document.formular.submit() Deine Konfigurations- und Passwort-Dateien an irgendwen verschickt werden?

    Cheatah

    1. Das ist selbstverständlich völlig ausgeschlossen. Oder möchtest Du, dass mit einem kleinen Trick und evtl. einem automatischen document.formular.submit() Deine Konfigurations- und Passwort-Dateien an irgendwen verschickt werden?

      Hm....stimmt, an sowas habe ich noch gar nicht gedacht...okay, sehe ich ein.

  2. Moin!

    So, dieses SCript sollte mir den Upload ermöglichen, wie schon oben beschrieben, bleibe ich ja beim absenden hängen, der File Name kommt ja hübsch im Array 'file' an und kann ich auch verarbeiten, aber es wird kein HTTP-Upload gestartet.

    Pro file-Button _eine_ Datei, die hochgeladen wird. Select-Felder senden nur die values, aber keine Dateien. Wäre ja auch noch schöner, dann könnte man ja auch ganz ohne file-Button einfach Dateinamen als value angeben und würde die Dateien kriegen.

    Also müsste ich wohl dem JScript mitteilen, das beim Absenden ein neuer Typ zugewiesen wird, also in der Art: Option -> File.

    Du müßtest einfach mehrere file-Buttons machen.

    Wie kann man sowas in JS realisieren?

    Garnicht. Sicherheitsgründe.

    - Sven Rautenberg