Just nu i M3-nätverket
Gå till innehåll

Att ladda upp filer mot mysql


nire

Rekommendera Poster

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]

Länk till kommentar
Dela på andra webbplatser

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å.

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...