• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datei per Link öffnen

bastler1

Neues Mitglied
Hallo
Ich habe in einer DB mehrere Dateispeicherorte in Form von
file://///Daten/Ordner/test.txt abgelegt. Diese Dateispeicherorte lese ich per PHP aus und übergebe sie dann an ein Array. Nun hab ich das Array in einen html-Link eingebunden.
Code:
<a href=$text target='_blank'> Versionstext</a>
Wenn ich den Link anklicke soll sich die Datei öffnen (Editor), oder der Inhalt soll im Browser dargestellt werden. Aber wenn ich auf den Link klicke passiert nichts. Gebe ich in die Adresszeile des Browsers file://///Daten/Ordner/test.txt ein, dann gibt mir der Browser den Inhalt der Datei aus. Wie funktioniertdas ganze aber mit einem Link?

MfG
bastler1
 
Werbung:
Sorry, hier die Datei zum Ausgeben der Daten:
Code:
<body>
<a href="home.html" target="_self"> Home</a>
<br>
<br>
<h1>Anlagenverzeichnis</h1>
<br>
<?php
error_reporting(E_ALL);
// Verbindungs-Objekt samt Zugangsdaten festlegen
@$db = new mysqli('localhost', 'root', '', 'anlagen');

if (mysqli_connect_errno()) {
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
  exit();
}

// Tabellenkopf
echo "
<table>
<thead>
<td>AnlagenID</td>
<td>Anlagenname</td>
<td>Abteilung</td>
<td>Kostenstelle</td>
<td>CPU</td>
<td>Versionstext</td>
<td>Pufferbatterie</td>
<td>Lagernummer</td>
<td>Wechselmonat</td>
</thead>
";

// Datensatz-Ausgabe festlegen
$sql_befehl = "SELECT * FROM anlage";

if ($resultat = $db->query($sql_befehl)) {  
  // Durchlaufen der Datenbankabfrage
  while($datensatz = $resultat->fetch_array() ){
    // Datenfelder – Inhalte extrahieren und
    // als Variablen zur Verfügung stellen
    extract($datensatz);
    // Tabelleninhalt
echo $text;
    echo "
    <tr>
    <td>$anlagenID</td>
    <td>$anlagenname</td>
    <td>$abteilung</td>
    <td>$kostenstelle</td>
    <td>$cpu</td>
    <td><a href=$text target='_blank'> Versionstext</a></td>
    <td>$pufferbatterie</td>
    <td>$lagernr</td>
    <td>$wechselmonat</td>
    </tr>
    ";
  }
  // Speicher freigeben
  $resultat->close();  
} else {
  // Meldung bei Fehlschlag
  echo "Zugriff fehlgeschlagen!";
}

// Tabellenende
echo "</table>";

// Verbindung zum Datenbankserver beenden
$db->close();

?>
<body>
</body>
 
Werbung:
Du müsstest den Link auf eine Datei setzen die dir den Inhalt ausliest und mit dem entsprechenden header versehen an den Browser zurück gibt.
 
Werbung:
Minibeispiel:

Code:
<?php
header("Content-type: text/plain");
echo "Das ist der Inhalt der Datei";
?>
 
In deiner Datei ist soweit ich es verstehe nur die Liste der Inhalte die man runterladen kann. Für den Download musst Du nun eine neue Datei erstellen in der diese Inhalte ausgelesen und wie in meinem Beispiel oben an den Browser zurückgegeben werden. Und auf diese Datei verlinkst Du dann, also:

Code:
<a href="download.php?id=<?php echo $id; ?>">Download</a>
 
Werbung:
Das ist es doch noch einfacher - da muss es ja so funktionieren wie Du es eingebaut hast :mrgreen:
 
Werbung:
Hallo.

Hast du denn schon überprüft ob $text auch wirlich den Link enthält.

Ansonsten habe ich das bei mir so gelöst:
PHP:
$link = "<a href=\"$url\">$titel</a>";
echo "<tr>
<td>$link</td>

Wobei $url den Link aus meiner Datenbank enthält.

Villeicht hilft dir das als Lösungsansatz.

Gruss
Elroy
 
Den Link hab ich überprüft, der ist ok, und aus irgend einen Grund funktioniert das Ganze jetzt auch.
Allerdings steh ich nun vorm nächsten Problem. Der Dateilink wird ja über ein Textfeld in Form von "input type=file" per Formular in die DB geschrieben. Wenn ich die Textdatei im Textfeld/Dateiauswahlfeld auswähle, dann wird sie in der Form in die DB geschrieben:
\\Rechnername\Festplattenname(d)\Ordner\test.txt. In dieser Form funzt dann aber mein Zugriff über den Link nicht mehr. Dieser klappt nur, wenn der Festplattenname und der Laufwerksbuchstabe raus sind, also so
\\Rechnername\Ordner\test.txt
Wie bekomm ich das Texteingabefeld dazu, den DB-Eintrag so zu formatieren, wie ich es benötige?

MfG
bastler1
 
Werbung:
Zurück
Oben