---
title: "hjälp med blobar och utskrivning av filnamn"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/75870-hjälp-med-blobar-och-utskrivning-av-filnamn"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mikael_a"
published: "2003-05-04T20:31:45.000Z"
updated: "2003-05-05T08:28:50.000Z"
replies: 4
views: 277
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/75870-hjälp-med-blobar-och-utskrivning-av-filnamn"
---

# hjälp med blobar och utskrivning av filnamn

## #1 — mikael_a, 2003-05-04T20:31Z

Jag sparar olika filer i en databas som en blob, dessa vissas genom showFiles.php och trycker man på länken ladda ner, så anropas filen downloadFile.asp och filen laddas ner... nackdelen är att filnamnet blir downloadFile.xxx (xxx = fil ändelse) hur gör man för att filen skall få namnet tex bild.jpg och inte downloadFile.jpg....

databasen ser ut enligt följande:

id (int) = id
title (tinytext) = rubrik (tex bild på datorn)
description (text) = beskriving
file (longblob) = själva bilden som en blob
file_name (text) = fil namnet (tex bild.jpg)
file_size (int) = storleken på bilden
file_typ (tinytext) = typ av fil, tex .zip, .jpg, .doc osv)
added (datetime) = datum
visible (tinyint) = 1 eller 0

det som skall visas är alltså file_name

```php

*** showFiles.asp ***

<?php

// Database connection variables

$dbServer = "localhost";
	$dbDatabase = "xxx";
		$dbUser = "xxx";
			$dbPass = "xxx";

$sConn = mysql_connect($dbServer, $dbUser, $dbPass)
	or die("Couldn't connect to database server");

$dConn = mysql_select_db($dbDatabase, $sConn)
	or die("Couldn't connect to database $dbDatabase");

$dbQuery = "SELECT id, title, file_type ";

$dbQuery .= "FROM ca_entry ";

$dbQuery .= "ORDER BY added DESC";

$result = mysql_query($dbQuery) or die("Couldn't get file list");

?>

<table border="1" cellpadding="0" cellspacing="0" bordercolor="#111111" width="100%">
<tr><td width="34%" bgcolor="#FF9900" height="21">

<p style="margin-left: 10"><b><font size="2" face="Verdana" color="#FFFFFF">

Beskrivning</font></b></td>

<td width="33%" bgcolor="#FF9900" height="21">

<p style="margin-left: 10"><b><font face="Verdana" size="2" color="#FFFFFF">

Filtyp</font></b></td>

<td width="33%" bgcolor="#FF9900" height="21">

<p style="margin-left: 10"><b><font face="Verdana" size="2" color="#FFFFFF">

Fil</font></b></td></tr>

<?php

while($row = mysql_fetch_array($result))

{

?>

<tr>

<td width="34%" bgcolor="#FFDCA8" height="21">

<p style="margin-left: 10; margin-right: 10">

<font face="Verdana" size="1">

<?php echo $row["title"]; ?>

</font>

</td>

<td width="33%" bgcolor="#FFDCA8" height="21">

<p style="margin-left: 10">

<font face="Verdana" size="1">

<?php echo $row["file_type"]; ?>

</font>

</td>

<td width="33%" bgcolor="#FFDCA8" height="21">

<p style="margin-left: 10"><font face="Verdana" size="1">

<a href="downloadFile.php?id=<?php echo $row["id"]; ?>">

Ladda ner

</a></font>

</td>

</tr>

<?php

}

echo "</table>";

?>
```

```php

*** downloadFile.asp ***

<?php

$id = $_GET[id];

//$id;

if(!is_numeric($id))
	die("Invalid id specified");

// Database connection variables

$dbServer = "localhost";
	$dbDatabase = "xxx";
		$dbUser = "xxx";
			$dbPass = "xxx";

$sConn = mysql_connect($dbServer, $dbUser, $dbPass)
	or die("Couldn't connect to database server");

$dConn = mysql_select_db($dbDatabase, $sConn)
	or die("Couldn't connect to database $dbDatabase");

$dbQuery = "SELECT file_name, file_type, file ";

$dbQuery .= "FROM ca_entry ";

$dbQuery .= "WHERE id = $id";

$result = mysql_query($dbQuery) or die("Couldn't get file list");

if(mysql_num_rows($result) == 1)

{

$fileType = @mysql_result($result, 0, "file_type");

$fileContent = @mysql_result($result, 0, "file");

header("Content-type: $fileType");

echo $fileContent;

}

else

{

echo "Record doesn't exist.";

}

?>
```

tack för all hjälp...

Permalänk: https://www.webforum.nu/p/75870

## #2 — Matte, 2003-05-04T21:03Z

Det där med att sätta headers för nedladdning, och som funkar i alla webläsare, verkar vara en djungel.
Läser du användarnoteringarna för header i manualen så sägs det mycket om det. Det är inte säkert att du blir klokare, men jag rekommenderar en ordentlig genomläsning här: <http://se.php.net/manual/en/function.header.php>

Med lite av vad som framgår där, och på andra håll har jag funnit att man kommer en bit på vägen med (det downloadskript som jag använder):

```
$sql = "SELECT * FROM file_table where id='{$_GET['id']}'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

header("Content-Type: application/save"); 
header("Content-type: ".$row['filetype']);
header("Content-Disposition: attachment; filename=".$row['filename']); 
header("Content-Length: ".$row['filesize']); 
header("Content-Transfer-Encoding: binary"); 

echo $row['bin_data'];
```

 
Jag tror ändå det är långt ifrån heltäckande, och det finns säkert saker som kunde gjorts annorlunda och bättre.

Permalänk: https://www.webforum.nu/p/1034775

## #3 — mikael_a, 2003-05-05T08:18Z

hmmm jag får parse error på rad 22 dvs header("Content-Length: $file_size");

```php

if(mysql_num_rows($resultat) == 1){
		$fileType = @mysql_result($resultat, 0, "file_type");
		$fileContent = @mysql_result($resultat, 0, "file");

		header("Content-Type: application/save");
		header("Content-type: $fileType");
		header("Content-Disposition: attachment; file_name=$file_name);
		header("Content-Length: $file_size");
		header("Content-Transfer-Encoding: binary");

		echo $fileContent;

	}//end if...
	else{
		echo "Record doesn't exist.";
	}//end else...
```

Permalänk: https://www.webforum.nu/p/1034956

## #4 — stevenet, 2003-05-05T08:25Z

Det fattas en " på raden ovan.

Permalänk: https://www.webforum.nu/p/1034964

## #5 — mikael_a, 2003-05-05T08:28Z

tack... jag löste det :)

jag använde:

```php

if($data = mysql_fetch_assoc($resultat)){
		if(stristr('mac', $_SERVER['HTTP_USER_AGENT'])) {
			$type = 'application/download';

			} else {
				$type = 'application/octet-stream';
        	}

			header("Content-Type: {$type}");
		   	header("Content-Disposition: attachment; filename=\"{$data['file_name']}\"");
		   	header("Content-Length: {$data['file_size']}");
		   	header("Content-Transfer-Encoding: binary");
		   	echo $data['file'];
            return TRUE;

		}
		        else {
		            return FALSE;
		            echo "Record doesn't exist.";
		        }
```

Permalänk: https://www.webforum.nu/p/1034965

---

Tråden på webben: https://www.webforum.nu/amne/php/75870-hjälp-med-blobar-och-utskrivning-av-filnamn
