webForumDet fria alternativet

Ladda hem bilder?

Flash

5 svar · 697 visningar · startad av Alar

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

Hej,
jag jobbar med en sajt (gjord helt och hållet i Flash) där vi har ett bildgalleri som man kan bläddra sig igenom.
Skulle vilja att användaren genom att klicka på bilden kan ladda hem bilden i fråga till sin dator.
Någon som har ett litet script att bjuda på?
Se gärna http://www.teaterlederman.com
/Alar

Medlem sedan maj 2003750 inlägg
#2

Rör det sig om Flash 8 eller senare så kan ni ju använda er av FileReference-objektet. Med det kan du låta en användare dels ladda ner filer från servern (Öppnar ett sånt där "spara som" fönster) och dels kan du låta användaren ladda upp en fil till servern (Kräver en backend som sköter själva sparandet på servern).

Du börjar med att skapa ett FileReference-objekt.

import flash.net.FileReference;

var fileRef:FileReference = new FileReference();

Sedan när du vill ge användaren möjlighet att ladda hem något så anropar du helt enkelt dess metod download(). Metoden har två parametrar. Den första är en url till den fil som skall laddas ner och den andra, som är frivillig, ger dig möjlighet att ange ett annat defaultnamn på filen än vad den heter på servern.

if(!fileRef.download("bilden.jpg" )) {
    trace("dialog box failed to open.");
}

Sen finns det givetvis en hel uppsjö events som låter dig hålla koll på hur det går med hemladdningen av filen.

Mer information om objektet finns såklart i actionscript-referensen i hjälpen.

Sen kan jag ju också nämna FileReferenceList som kan användas för att ladda upp flera filer samtidigt.

Medlem sedan nov. 2004149 inlägg
#3

OK. Tack. Jag förstår.
Men jag jobbar fortfarande i Flash MX (det har inte blivit av att uppgradera)...
Finns det möjligen någon lösning för MX?
/Alar

Medlem sedan maj 2003750 inlägg
#4

Ja men den är inte riktigt lika lätt som med 8:an. Och jag skall erkänna att jag inte så bra koll på exakt hur man gör.

Men så vitt jag vet så behöver man en sida med serverside skript t.ex php eller ASP. Med hjälp av serverskriptet så attach:ar man filen till dokumentets headers vilket triggar "Spara som" i webbläsaren. Och så laddar man helt enkelt detta dokument. Har fått för mig att man skall kunna göra detta med t.ex LoadVars.

Medlem sedan maj 2005704 inlägg
#5

Skapa ett php dokument med följande innehåll:

<?php

$file=$_GET["file"];	

$file=$path . $file;

//First, see if the file exists
if (!is_file($file)) { die("<b>404 File not found!</b>"); }

//Gather relevent info about file
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

//This will set the Content-Type to the appropriate setting for the file
switch( $file_extension ) {
	//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
	case "exe": 
	case "zip":
	case "mp3":
	case "mpg":
	case "avi": 
	case "php":
	case "htm":
	case "html":
	case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;

	default: $ctype="application/force-download";
}

//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:");
header("Cache-Control: public");
header("Content-Description: File Transfer");

//Use the switch-generated Content-Type
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
$size=filesize($file);
header("Content-Length: ".$size);

//open the file
$fp=fopen("$file","rb");
//start buffered download
while(!feof($fp)) {
	//reset time limit for big files
	set_time_limit(0);
	print(fread($fp,1024*8));
	flush();
}
fclose($fp);
?>

Sedan är det bara att göra en getURL från Flash där du lägger till filnamnet som en URL varibel:
getURL("getDownload.php?file=mypic.jpg");

Medlem sedan nov. 2004149 inlägg
#6

Suveränt!
Tack för hjälpen.
/Alar

262 ms totalt · 3 externa anrop · v20260731065814-full.aa8cfc83
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)