Avatar billede alexander_j Nybegynder
04. marts 2004 - 07:59 Der er 6 kommentarer og
1 løsning

Hvordan laver man et link til filer i mySQL der åbnes direkte?

Jeg har en fil ved navn 'dl.php' med følgende kode(redigeret til eksemplet):
<?php
include 'myconnection.php';
$q = mysql_query("SELECT file_name,file_code,filetype FROM mytabel WHERE id=".$_REQUEST["id"]) or die(mysql_error());
if (mysql_num_rows($q)) {
  extract(mysql_fetch_array($q));
  header("Cache-control: no-cache, must-revalidate");
  header("Pragma: no-cache");
  header("Content-disposition: attachment; filename=\"$file_name\"");
  header("Content-type: $file_type");
  echo $file_code;
} else {
  echo "404 - file not found!";
}
?>

For at downloade filen laver jeg et link til ovenstående('dl.php?id=1') - og i princippet virker det fint, hvis man blot gemmer filen på loakalcomputeren først og derefter åbner den. Men hvis man blot venstreklikker på linket så forsøger computeren at åbne filen med fx word, photo editor, acrobat reader osv., for så derefter at melde fejl om at filen ikke kunne åbnes!

Her kan i se det i aktion: http://www.bogstav.dk/default.php?menu=0&submenu=1&subsubmenu=3&id=2

Prøv at venstreklikke på downloadfilen 'bogstav-vokalkort.pdf (374 kb)' - den vil så forsøge at åbne filen, men melder fejl(i acrobat 'There was an error opening this document. The file does not exist.').
Prøv bagefter at højreklikke på 'bogstav-vokalkort.pdf (374 kb)' - og gem den lokalt og prøv at åbne filen, så åbnes den fint!

Hvorfor nu det?
Avatar billede mulbo Nybegynder
12. marts 2004 - 22:10 #1
Tror jeg ved hvad du mener...
Du vil alså have det sådan at man kan skrive dl.php?id=1
og så henter den en fil, men du kan ikke åbne den i fx adobe reader osv....
Det kan du gøre med:
<?php
$mysql_host = "localhost";
$mysql_brugernavn = "iser";
$mysql_password = "pass";
$mysql_database = "database";
$db=mysql_connect("$host", "$mysql_brugernavn", "$mysql_password");
mysql_select_db($mysql_database, $db);
$mysql_query = mysql_query("SELECT id,url FROM download");
while($data = mysql_fetch_array($mysql_query))
{
$id = $data['id'];
$url = $data['url'];
if($_GET['id'] == $id)
{
Header("Location: $url");
}
}
mysql_close();
?>
SQL:
CREATE TABLE `download` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` TEXT NOT NULL ,
`tekst` TEXT NOT NULL
);

Såå kan du lave en side hvor du kan se downloads her er et ex.

<?php
print("<table border=0 width=300>");
$mysql_host = "localhost";
$mysql_brugernavn = "iser";
$mysql_password = "pass";
$mysql_database = "database";
$db=mysql_connect("$host", "$mysql_brugernavn", "$mysql_password");
mysql_select_db($mysql_database, $db);
$mysql_query = mysql_query("SELECT * FROM download");
while($data = mysql_fetch_array($mysql_query))
{
$id = $data['id'];
$tekst = $data['tekst'];
print("<tr><td><a href='?id=$id>$tekst</a></td></tr>");
}
print("</table>");
?>
Avatar billede mulbo Nybegynder
12. marts 2004 - 22:10 #2
Kunne det bruges?
Avatar billede alexander_j Nybegynder
12. marts 2004 - 22:52 #3
Øh nej det tror jeg ikke - tror heller ikke jeg har forklaret mig godt nok!

Filen er gemt som 'blob' i en mySQL database - dl.php?id=1 bruges blot til at trække filens data ud af databasen!

Og den trækker data fint ud af databasen når man vælger 'gem som', men ved direkte 'åbn', så går det galt!
Avatar billede mulbo Nybegynder
13. marts 2004 - 14:31 #4
Du kan ikke lægge en fil i mysql databasen! ;)
Avatar billede alexander_j Nybegynder
13. marts 2004 - 16:39 #5
Det er ellers lykkedes mig meget fint - problemet er bare når jeg skal trække data ud igen, så bliver det nød til at være med 'gem som' istedet for det direkte 'åbn'!

Filerne i nedestående link ligger i en mySQL-database:
http://www.bogstav.dk/default.php?menu=0&submenu=1&subsubmenu=3&id=2
Avatar billede alexander_j Nybegynder
13. marts 2004 - 16:44 #6
http://www.delfs.dk/articles/danish/Filer_i_mysql.html på det her link kan du læse om filer i mySQL - desværre står der ikke noget om mit problem!
Avatar billede alexander_j Nybegynder
18. marts 2004 - 19:57 #7
Problemet var åbenbart:  header("Cache-control: no-cache, must-revalidate");
Efter den er fjernet virker alt fint!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester