webForumDet fria alternativet

Lagra fil i databas.

PHPur PHP

5 svar · 443 visningar · startad av LOOlau

Medlem sedan jan. 200499 inlägg
Frågan#1

Hej...

Vill lagra en fil i en databas och sen självklart kunna presentera denna fil. Mp3, bild eller vad det nu är för fil.

Har sökt endel i forumet och på google men hittar inte de jag söker... Är kass på att söka.. Så om någon kundde förklara hur man gör eller ge mig en länk där det förklaras skule uppskattas..

Tacksam för hjälp..

Medlem sedan jan. 200499 inlägg
#2

Såhär långt har jag kommit iaf..

Får ut en array som innehåller lite information
Fattar doc inte riktigt hur ja ska få in filen i en databas..

Array ( [filename] => Array ( [name] => top-pice.png [type] => image/png [tmp_name] => /tmp/phpWjdau4 [error] => 0 => 944 ) )

<?
print_r($_POST[filename]);
echo "<br />";
print_r($_FILES);

echo "<form enctype='multipart/form-data' method='POST'>";
//echo "<form method='post'>";
echo "<input type='file' name='filename'>";
echo "<input type='submit' value='ladda upp fil'>";
echo "</form>";
?>

Medlem sedan nov. 200522 inlägg
#3

Det är rätt ovanligt att lagra filer i databaser. Skulle det inte funka att lagra en referens till filen istället? Alltså lagra bara sökvägen. Det är nog den vanliga varianten.

Medlem sedan jan. 200499 inlägg
#4

Filen som hammnar i databasen är 0 bytes. Nån som vet vad felet är?
Den går in i if sattsen "if (file_exists($_FILES[filename][tmp_name]))".

<?
	$database = "databas";
	$login = "root"; 
	$password= "passerord";
	$hostname = "localhost"; 
	
	mysql_connect($hostname, $login, $password) or die("Unable to connect to MySQL"); 	
	mysql_query("use $database") or die("Invalid query: " . mysql_error());

print_r($_FILES[filename]);

if (file_exists($_FILES[filename][tmp_name]))
{
	echo "<font style='color:green;'>JAG EXISTERAR!</font>";	
	$file = $_FILES[filename][tmp_name];
	$sql = "INSERT INTO files (id) VALUES ('')";
	mysql_query($sql) or die("Invalid query $sql" . mysql_error());

	echo mysql_insert_id();

	 $sql = "update files set file=load_file('$file') where id=".mysql_insert_id();
	mysql_query($sql) or die("Invalid query $sql" . mysql_error());
}
else
{
	echo "<font style='color:red;'>JAG EXISTERAR INTE!</font>";
}
echo "<form enctype='multipart/form-data' method='POST'>";
echo "<input type='file' name='filename'>";
echo "<input type='submit' value='ladda upp fil'>";
echo "</form>";
?>
Medlem sedan jan. 200499 inlägg
#5

ok nu står jag som ett frågetecken. Testade att med exact samma kod men ändrade $file = $_FILES[filename][tmp_name]; till $file = "/tmp/.X0-lock" en fil som redan finns i /tmp och det FUNGERAR!?

Medlem sedan jan. 200499 inlägg
#6

$file = $_FILES[filename][tmp_name];
$exec="chmod 644 $file";
exec($exec, $ceppo, $ceppo2);

Löste problemet.. Antar att sql inte hadde rättighet att läsa filen..

125 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)