php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-02-2006, 22:52
Yooda
 Member
Links : Onlinestatus : Yooda ist offline
Registriert seit: Jul 2003
Ort: Gelsenkirchen
Beiträge: 228
Yooda ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Datei öffnen

Hallo,

Ich bin heute die ganze Zeit an einem Problem, welches ich nicht gelöst bekomme.

ich habe ein Downloadscript, mit dem ich Leuten Dateien verschiedenster Art anbiete. Unter anderem sind das PDF- und Word-Dateien. Allerdings gibt es damit ein Problem.
Wenn man die Datei (beim Downloaddialog) öffnet, kommt bei jeder Datei z.B. PDF die Fehlermeldung, dass die Datei nicht existiere. Wenn man statt auf Öffnen auf Speichern klickt, und diese vom Rechner öffnet, dann funktioniert dies jedoch einwandfrei.

Das ist der Codeausschnitt:
PHP-Code:
  $filename    $row['download_filename'];
  
$basedir      $_SERVER["DOCUMENT_ROOT"]."/downloads";
  
$filename    sprintf("%s/%s"$basedir$filename);
  
$save_as_name basename($filename);

  
header("Content-Type: application/octet-stream");
  
header("Content-Disposition: attachment; filename=\"$save_as_name\"");
  
readfile($filename);
  exit; 

Lasse ich mir die Variablen ausgeben, so erhalte ich dieses Ergebnis:

$basedir => /home/*****/www/wb/www.*****.de/htdocs/downloads
$filename => /home/*****/www/wb/www.*****.de/htdocs/downloads/Testtermine_WS_2007_.pdf
$save_as_name => Testtermine_WS_2007_.pdf

Die Datei ist in dem Ordner vorhanden und kann manuell geöffnet werden.
Also wenn ich www.*****.de/downloads/Testtermine_WS_2007_.pdf aufrufe, dann klappt es auch. Warum kann ich mir nicht erklären.
__________________
Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.
Mit Zitat antworten
  #2 (permalink)  
Alt 28-02-2006, 23:53
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann es sein, dass er beim Öffnen-Dialog die Datei nochmal anfordert oder so und beim Speichern Unter Dialog einfach abspeichert?
Mit Zitat antworten
  #3 (permalink)  
Alt 01-03-2006, 00:16
Yooda
 Member
Links : Onlinestatus : Yooda ist offline
Registriert seit: Jul 2003
Ort: Gelsenkirchen
Beiträge: 228
Yooda ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tja, das ist mein Problem,
ich habe einfach keine Ahnung... Habe sämtliche Fehlerquellen (bis auf die meine Wenigkeit) ausgeschlossen...


Für Vorschläge immer offen


Grüße

David
__________________
Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.
Mit Zitat antworten
  #4 (permalink)  
Alt 01-03-2006, 15:02
Yooda
 Member
Links : Onlinestatus : Yooda ist offline
Registriert seit: Jul 2003
Ort: Gelsenkirchen
Beiträge: 228
Yooda ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Push


Kann mir keiner Helfen?

Eine ganze Schule leidet darunter
__________________
Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.
Mit Zitat antworten
  #5 (permalink)  
Alt 01-03-2006, 15:13
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich würde dir mal empfehlen die header korrekt nach Datei zu setzen ?
PHP-Code:
//Für pdf
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile($datei);
exit; 
Funzt es jetzt zumindest für pdf's ?

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #6 (permalink)  
Alt 01-03-2006, 19:19
Yooda
 Member
Links : Onlinestatus : Yooda ist offline
Registriert seit: Jul 2003
Ort: Gelsenkirchen
Beiträge: 228
Yooda ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi alle...

Also ich habe jetzt folgendes getestet:


$filename = $_SERVER["DOCUMENT_ROOT"]."/downloads/".$row['download_filename'];

header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filename);
exit;

Es öffnet sich der Dialog. Wenn ich die Datei namens "index" vom Typ Adobe Acrobat Browser Dokument öffne, dann klappt dies auch.

Das ist mir ein Rätsel....

Nur beibehalten kann ich es nicht, da ich ja Dateien aller Art zum Download anbiete...

Archive, pdf, .doc, Excel, Bilder usw...

Woran kann das liegen?


Viele Grüße

David
__________________
Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.
Mit Zitat antworten
  #7 (permalink)  
Alt 02-03-2006, 00:14
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schau mal HIER die obersten beiden Einträge. Der Zweite ist der 1., also den zuerst lesen. Ich denke das ist genau dein Problem, oder?

Demnach musst du einfach nur octet-stream zusammen schreiben als "octetstream" - am besten ne kleine "Browserweiche" einbauen
Mit Zitat antworten
  #8 (permalink)  
Alt 07-03-2006, 18:47
Yooda
 Member
Links : Onlinestatus : Yooda ist offline
Registriert seit: Jul 2003
Ort: Gelsenkirchen
Beiträge: 228
Yooda ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Shurakai,

ich habs jetzt mal in mehreren Varianten versucht. Leider vergeblich.
So habe ich es gemacht.

PHP-Code:
   $row   mysql_fetch_row($query);
   
$file  $_SERVER["DOCUMENT_ROOT"]."/downloads/".$row['download_filename'];

   
$len filesize($file);
   
$filename basename($file);
   
$file_extension strtolower(substr(strrchr($filename,"."),1));

   switch( 
$file_extension ) {
      case 
"pdf"$ctype="application/pdf"; break;
      case 
"exe"$ctype="application/octet-stream"; break;
      case 
"zip"$ctype="application/zip"; break;
      case 
"doc"$ctype="application/msword"; break;
      case 
"xls"$ctype="application/vnd.ms-excel"; break;
      case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
      case 
"gif"$ctype="image/gif"; break;
      case 
"png"$ctype="image/png"; break;
      case 
"jpeg":
      case 
"jpg"$ctype="image/jpg"; break;
      case 
"mp3"$ctype="audio/mpeg"; break;
      case 
"wav"$ctype="audio/x-wav"; break;
      case 
"mpeg":
      case 
"mpg":
      case 
"mpe"$ctype="video/mpeg"; break;
      case 
"mov"$ctype="video/quicktime"; break;
      case 
"avi"$ctype="video/x-msvideo"; break;
      default:   
$ctype="application/force-download";
   }

   
header("Pragma: public");
   
header("Expires: 0");
   
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   
header("Cache-Control: public");
   
header("Content-Description: File Transfer");

   
header("Content-Type: $ctype");

   
$header="Content-Disposition: attachment; filename=".$filename.";";
   
header($header);
   
header("Content-Transfer-Encoding: binary");
   
header("Content-Length: ".$len);
   @
readfile($file);
   exit; 

So, nach dem Code ist nach wie vor der Download der Datei möglich, das direkte Öffnen jedoch immernoch nicht.

Hier ist der Link zu meinem Problem:

http://www.wbk-el.de/index.php?show=dates

In den ersten beiden Einträgen sind PDF-Dateien, wo man es ausprobieren kann.

Ich hoffe, dass mir jemand helfen kann, weil ich mittlerweile echt schon eine Krise bekomme.



Viele Grüße

David
__________________
Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

copycockpit

Lassen Sie eine KI in Sekundenschnelle hochwertige Texte für z.B. Blogs, Produkt-Beschreibungen und Landing-Pages schreiben.

17.01.2022 Berni | Kategorie: KI Tools
frase.io

Automatisch Texte von einer KI Schreiben lassen. Die Effizienz von Frase und die geschriebenen Texte machen es einfach, SEO-Texte zu schreiben.

27.12.2021 Berni | Kategorie: KI Tools
Marktplatz für Blog-Marketing und Blog-Vermarktung ansehen Marktplatz für Blog-Marketing und Blog-Vermarktung

Blogmission, hier finden Blogbetreiber (Publisher) und Firmen (Advertiser) einfach und effektiv zueinander.

20.12.2021 Berni | Kategorie: SEO/ DIENSTE
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:41 Uhr.