webForumDet fria alternativet

Spara filen till disk-länk?

PHP

12 svar · 682 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Hej!

Om man bara länkar till en bild så visas ju oftast bilden direkt i läsaren. Finns det något sätt så att det kommer upp en alert med "spara filen till disk" när man klickar på en länk till tex en bildfil?

Taxi!

Medlem sedan aug. 20039 340 inlägg
#2

Med lite PHP-trixande går det. Ett annat sätt är att tvinga användaren, även om det är fult...

<a href="bild.png" onclick="alert('Du måste högerklicka blablabla'); return false;">...</a>
Medlem sedan nov. 20016 480 inlägg
#3

nitro2k01 skrev:

Med lite PHP-trixande går det. Ett annat sätt är att tvinga användaren, även om det är fult...

<a href="bild.png" onclick="alert('Du måste högerklicka blablabla'); return false;">...</a>

Hur gör man det med php? Det vore ju ännu bättre. Nu när du säger det kom jag på att det väl är så man brukar göra.

Ber modertorn att flytta tråden till php... Tackar för svar.

Medlem sedan dec. 20042 245 inlägg
#4

Den här tråden är skrämmande lik http://www.webforum.nu/showthread.php?t=1123 :)

Medlem sedan nov. 20016 480 inlägg
#5

Fast jag fick inga php-förslag i den tråden ;)

Medlem sedan dec. 20042 245 inlägg
#6
header('Content-Disposition: attachment');

Eller .htaccess

<FilesMatch "\.(pdf)$">
 Header set Content-Disposition attachment
</FilesMatch>

:)

Medlem sedan juni 20004 308 inlägg
#7

Tråden flyttas till PHP-forumet.

Medlem sedan juni 20006 031 inlägg
#8

phpfilen som länken går till:

<?php 
// Hämta bildnamn på valfritt sätt
$filnamn = "nånting.jpg";

header('Content-type: application/octet-stream');
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="$filnamn"');
 
exit;
?>
Medlem sedan dec. 20042 245 inlägg
#9

Pedda skrev:

header('Content-type: application/octet-stream');
header('Content-type: image/jpeg');

Vad är syftet med den första raden ovan?

Medlem sedan juni 20006 031 inlägg
#10

Första raden är jag inte säker på men den andra är information till fönstret som öppnas. Se bifogade bilden.
Så här ska koden se ut om allt ska synas:

<?php 
$filnamn = "avatar.jpg";
 
header('Content-type: application/octet-stream');
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="'.$filnamn.'"');
header('Content-Size: '.filesize($filnamn));
 
readfile($filnamn);
exit;
?>

(Rättade även till ett fel jag hade gjort i koden).

bildned.jpg
Medlem sedan maj 2001211 inlägg
#11

Jag har nästan samma problem. Jag vill skapa en textfil. Fylla den med lite text och sedan erbjuda användaren en öppna/spara ruta där han kan spara textfilen.

Jag testade därför sisåhär:

<?php
	$content = "hello world!";
	$file = fopen("/tmp/customer.txt", "w");
	fwrite($file, $content);
	fclose($file);
	
	header('Content-type: application/octet-stream'); 
	header('Content-type: text/plain'); 
	header('Content-Disposition: attachment; filename="/tmp/customer.txt"'); 
	readfile("/tmp/customer.txt");
?>

Men den skriver ändå ut "hello world" på skärmen. Vad göra?

Medlem sedan aug. 20039 340 inlägg
#12

Varför återupplivade du denna tråd istället för att svara i din egen? Lösningen till ditt problem är att du inte ska ha med hela sökvägen till filen i header-kommandot.

header('Content-Disposition: attachment; filename="customer.txt"');

Detta kommando talar bara om vad webbläsaren uppfattar filnamnet som. Du kan t ex skriva foo.txt även om filen heter customer.txt på servern.

Medlem sedan maj 2001211 inlägg
#13

tja, Själv tycker jag det är bättre att forsätta diskussionen i en redan befintlig tråd än att skapa en ny. Men jag kan ha fel..

Jag tackar och bockar för hjälpen! Det fungerar!

274 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
142 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
141 ms — ändringar (db)