Wie gebe ich einen Download-Ordner an, ohne den Dateinamen zu kennen?


RTC222

Ich möchte php oder xmlwebrequest verwenden, um eine Datei auf den Server hochzuladen und eine andere Datei vom Server zurück zu erhalten, nachdem der Upload abgeschlossen ist. Ich habe ein einfaches HTML-Formularskript, mit dem der Benutzer die hochzuladende Datei auswählen kann, und ich habe eine weitere Schaltfläche, mit der der Benutzer den Download-Ordner auswählen kann, um die neue vom Server empfangene Datei zu platzieren.

Das von mir erstellte Formular ermöglicht es dem Benutzer, zum Download-Ordner zu navigieren, möchte jedoch einen Dateinamen im lokalen Ordner auswählen. Dies ist ein Download, die Datei wäre also keine Datei auf dem Client-Computer, sie kommt vom Server.

Hier ist der HTML-Code:

<div class="h1_inf"><b>Upload/Download File</b></div><br><br>

<div class="z_01">

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload"><br><br>
    <input type="submit" value="Upload File" name="submit">
</form><br>

<form action="dnload.php" method="get">
    Select image to dnload:
    <input type="file" name="fileToDnload" id="fileToDnload"><br><br>
</form>

</div>

Frage: Wie kann ich ein Download-Verzeichnis für eine vom Server zu empfangende Datei auswählen? Ich bin offen für die Verwendung von PHP oder xmlwebrequest, aber die Formularelemente sind reines HTML.

Ich weiß, dass es viele Beiträge zu diesem Thema gibt, und einige haben gesagt, dass dies aufgrund der Browsersicherheit nicht möglich ist, aber es muss eine Möglichkeit geben, den Benutzer entscheiden zu lassen, wo er eine Datei vom Server herunterlädt.

Jaquarh

Sie können verwenden, glob()um durch Verzeichnisse zu blättern und alle Erweiterungen abzurufen.

function searchFiles($path, $extension) {
    $files = [];
    foreach(glob("{$path}/*.{$extension}"), GLOB_BRACE) as $file) {
        $files[] = array('name' => $file, 'size' => filesize($file));
    }
}

Sie können dann alle PNG-Bilder durchgehen und zum Download ausgeben:

<?php foreach(searchFiles('/images', 'png') as $image): ?>
    <a download href='/images/<?= $image['name']; ?>.png' alt='<?= $image['size']; ?>'> Download <?= $image['name']; ?> </a>
<?php endforeach; ?>

Verwandte Artikel