Just nu i M3-nätverket
Jump to content

Att ladda upp filer mot mysql


nire

Recommended Posts

Hallå,

Jag har tidigare köpt en bok om php-programmering och med den fick jag med några exempel, bl.a. ett där man laddar upp filer till en mysql-databas.

Men nu är det så att jag inte kan ladda upp filer större än ~1mb,

utan det som händer är att det (i webbläsaren) ser ut som att den laddas upp men när sidan sedan laddas om så finns den bara inte där.

Kollar jag direkt i mysql så finns den inte där heller.

Hade förut ett problem med att bilder inte laddades upp helt men det fixade jag med att ändra från blob till mediumblob.

Men mediumblob ska ju klara filer upp till 16mb så det kan ju inte bero på mysql då?

 

Här är phpkoden för att ladda upp filer:

(tagen från exemplet och omgjord för att passa min databas bara)

[color="#0000ff"]if[/color] ([color="#0000ff"]isset[/color]([color="#0000ff"]$[/color]_FILES['fildata'])) {
[color="#0000ff"]if[/color] (is_uploaded_[color="#ff0000"]file[/color]([color="#0000ff"]$[/color]_FILES['fildata']['tmp_name'])) {
	[color="#0000ff"]if[/color] ([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['besk']))
		$besk = "No description";
	[color="#0000ff"]else[/color]
		$besk = [color="#0000ff"]$[/color]_POST['besk'];
	db_connect("testdb");
	$filnamn = [color="#0000ff"]$[/color]_FILES['fildata']['name'];
$filtyp = [color="#0000ff"]$[/color]_FILES['fildata']['type'];
	$filstorlek = [color="#0000ff"]$[/color]_FILES['fildata']['size'];

	$fildata = [color="#ff0000"]addslashes[/color]([color="#ff0000"]fread[/color]([color="#ff0000"]fopen[/color]([color="#0000ff"]$[/color]_FILES['fildata']['tmp_name'], "rb"), [color="#ff0000"]filesize[/color]([color="#0000ff"]$[/color]_FILES['fildata']['tmp_name'])));

	$sql = "INSERT INTO upload (filnamn, filtyp, filstorlek, fildata, besk, owner)";
	$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk', '$loggedon')";
	[color="#ff0000"]mysql_query[/color]($sql);

	$fil_id = [color="#ff0000"]mysql_insert_id[/color]();
	[color="#ff0000"]mysql_close[/color]();		
}
}

 

Och här är formen:

<form action="<?=[color="#0000ff"]$[/color][color="#0000ff"]php[/color]_SELF?>" method="post" enctype="multipart/form-data">
Sökväg:<br>
<input name="fildata" type="[color="#ff0000"]file[/color]" size="28">
<br>
Beskrivning:<br>
<input type="text" name="besk" size="40">
<br>
<input type="[color="#ff0000"]reset[/color]" value="Clear">
<input type="submit" value="Upload">
</form>

 

 

EDIT:

http://www.radinks.com/upload/config.php

Alla inställningar som nämns på den här sidan är satt till 16M.

Tacksam för hjälp.

 

[inlägget ändrat 2006-11-12 01:06:59 av nire]

Link to comment
Share on other sites

eftersom det inte går att redigera (testat i 2 dagar) så skriver jag det här istället.

i php.ini har jag följande:

max_input_time 2400

memory_limit 64M

post_max_size 256M

upload_max_filesize 256M

 

och laddar jag upp till en mapp på servern och inte till databasen så funkar det hur bra som helst.. så det har nånting med databasen att göra ändå.

 

Link to comment
Share on other sites

Om det nu bara är till mysql du inte kan skicka datat så spelar det ju ingen större roll vad det står i php.ini däremot är det ju rätt avgörande vad du får för fel tillbaka från mysql() något som din kod blankt struntar i.

 

Testa att byta ut:

mysql_query($sql);

Mot:

mysql_query($sql) or die(mysql_error());

Så borde den berätta vad den inte tycker om, ifall det är där felet inträffar.

 

En annan möjlighet är ju att du när du försöker lagra din i mysql helt enkelt får ett script som tar längre tid att köra än det får (pga att den spenderar en massa tid åt att göra addslashes() och sånt) eller helt enkelt använder mer minne än den får. Det är svårt att säga något om utan att veta hur långt i din kod du kommer.

 

Sen kan jag inte för mitt liv begripa varför du vill lagra så stora filer i mysql. Är det filer som ska visas på webben kommer det ofelbart att både lasta ner servern i onödan samt tillföra inte så lite extra-arbete när den ska hämta något från databasen varje gång datat ska skickas tillbaka istf att servern lite lätt kan minnesmappa filen på disk som ska skickas. Men du har säkert goda skäl.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...