Michael: Datei öffnen aber mischung zw. MYSQL und fopen!

Hallo,

bin gerade am basteln für eine Dokumentenverwaltung.

Habe nun folgendes Problem:

Lade die Datei die ich Archivieren will über Upload in ein Netzlaufwerk
Code:
if($_GET['action'] == "upload") {

// Auf Fehler überprüfen
if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei']['error'] == UPLOAD_ERR_PARTIAL) {
// die Datei wurde nicht oder nur teilweise hochgeladen
die("Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut.");

} elseif ($_FILES['datei']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei']['error'] == UPLOAD_ERR_INI_SIZE) {
// die Datei ist zu groß
die("Die hochgeladene Datei ist zu groß.");

} else {
// die Datei wurde korrekt hochgeladen

// hier sind die mySQL Daten
include("include/DB.php");
@mysql_connect($DB_host, $DB_user, $DB_pass);
@mysql_select_db($DB_0002);

$user = "NAME"; // TEST
$pass = "1234"; // TEST
$KAT = $_POST['KAT'];
$ref_IDs = $_POST['ref_IDs'];

$query1 = "SELECT * FROM $TBL_0001 WHERE benutzername = '" . $user . "' ";

$result1 = mysql_query($query1) or die("Anfrage fehlgeschlagen: " . mysql_error());

while ($row1 = mysql_fetch_array($result1, MYSQL_NUM)) {
   $SERVER = $row1[3];
 $HPF = $row1[4];
 $PF = $row1[5];

// Leerzeichen im Dateinamen werden mit einem Unterstrich ersetzt
$dateiname = str_replace(" ", "_", $_FILES['datei']['name']);

echo "\\$SERVER\$HPF\$PF\$dateiname";

$DB_N_1 = "NUMMER";
//$XXX = "'".$_FILES['datei']['type']."'";
$DB_N_2 = "$ref_IDs"."_"."$DB_N_1";

// Temporäre Datei schreiben (ist wegen der Lese-Rechte nötig)
// und auf die temp-Datei Lese Rechte vergeben
move_uploaded_file($_FILES['datei']['tmp_name'], "\\$SERVER\$HPF\$PF\$DB_N_2");
//chmod("./tempfile.tmp", 0644);

}

// Und ab in die mySQL Tabelle...
$sql = "INSERT INTO $TBL_0003 VALUES('', '$user', '$KAT', '$ref_IDs', '".$_FILES['datei']['type']."', '$DB_N_2', '$dateiname')";

mysql_query($sql);
...

Anschließend wird es in einer Liste angezeigt:
Code:
<?
 $query7 = "SELECT * FROM $TBL_0003 WHERE user = '1' AND ref_IDs = '$Dok_KAT' ORDER BY ref_IDs ASC";
 $result7 = mysql_query($query7) or die("Anfrage fehlgeschlagen: " . mysql_error());

echo "<table width="100%" border="0">";
    while ($row7 = mysql_fetch_array($result7, MYSQL_NUM)) {
      echo "<tr>";
     echo "<td>";
     echo "<a href="Dokument_oeffnen_1.php?D_ID=$row7[0]">$row7[3]-$row7[4]-$row7[5]-$row7[6]</a><br>";
     echo "</td>";
   echo "</tr>";
    }
  echo "</table>";
 ?>

Und nun möchte ich es wieder öffnen !! Aber...
Da ich die Datei in ein anderes Verzeichnis geschoben habe und die Datei nicht in die MySQL intrriert habe, sondern nur den namen in einer Tabelle habe, weis ich nicht weiter wie ich diese Datei wieder öffen kann..
Code: (Ein Beispiel von vielen)... leider ohne Erfolg!

// hier sind die mySQL Daten einzufüllen
@mysql_connect('localhost', 'NAME', 'PASS');
@mysql_select_db('pdv');

// Daten über die gewünschte Datei aus mySQL lesen
$sql = "SELECT * FROM dokumente WHERE ID = '".$_GET['D_ID']."' LIMIT 1";
$result = mysql_query($sql) or die("Anfrage fehlgeschlagen: " . mysql_error());

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
 $name = $row[6];
 }

$handle = fopen("$name",'r');
$content = fread($handle,filesize('\\SZSERVER\archiv\msirl\001-002-003_NUMMER'));
fclose($handle);

// Inhalt Ausgeben.
echo $content;

Könn Ihr mir vielleicht weiterhelfen ??

So wird eine Datei in der MYSQL Tab. gespeichert:
id  user  H_id  ref_IDs      applikation      new_name             old_name
3    1     3    001-002-003  application/pdf  001-002-003_NUMMER SSKM,_Giro_36110765,_2007-05_Nr._05.pdf

Hoffe auf eure Hilfe!

Danke und viele GRüße
Michael

  1. Hello,

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $name = $row[6];
    }

    Ist das der vollständige Pfad zur Datei oder nur der Name nebst Extension?

    $handle = fopen("$name",'r');
    $content = fread($handle, filesize('\\SZSERVER\archiv\msirl\001-002-003_NUMMER'));

    ^^^^^^
                                             ||||||
    Das sollte dann natürlich auch der vollständige Pfad zur Datei sein

    fclose($handle);

    Au0erdem sollte man Sperren setzen. Zum reinen Lesen reicht ein

    flock($handle, LOCK_SH)

    Das sollte aber _vor_ dem filesize() breits geschehen sein.
    Freigabe des Locks erfolgt dann automatisch durch das fclose();

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de