Eli muistia kuluttamaton pastebin.
Koodia ei ole kommentoitu mutta on se aikas selvää...
Demo osoitteessa http://janijohannes.hirmu.net/tavaraa/jotain/kpaste/
EDIT: Ääh... Tuli bugi...
index.php
<?php ob_start(); ?> <html> <head> <title>fpaste</title> </head> <body> <?php class MySQLc { // Mukavuudenhaluisena tein tälläisen... var $con=null; var $s=0; var $r=0; function MySQLc($host,$name,$pass,$db="") { if ($db=="") $db=$name; $this->con=mysql_connect($host,$name,$pass); mysql_select_db($db,$this->con); } function DB($db) { mysql_select_db($db,$this->con); } function Query($query) { $this->s=mysql_query($query,$this->con); } function fetch_object() { return $this->r=mysql_fetch_object($this->s); } function ID() { return mysql_insert_id($this->con); } function Disconnect() { mysql_close($this->con); } } $dir='tavaraa/'; $c = new MySQLc("localhost","***","***"); $c->Query('CREATE TABLE IF NOT EXISTS fpaste (filu TEXT, nimi TEXT, size INTEGER, id INTEGER AUTO_INCREMENT UNIQUE KEY)'); if (isset($_POST['filu'])) { $f=$_FILES['filu']; $name=$dir.$f['name']; move_uploaded_file($f['tmp_name'],$name); $c->Query("INSERT INTO fpaste (filu, nimi, size) VALUES ('".file_get_contents($name)."', '".$f["name"]."', '" .$f["size"]."')"); unlink($name); $id=$c->ID(); $ech='<a href="?i='.$id.'">?i='.$id.'</a>'; } elseif (isset($_GET['i'])) { $id=$_GET['i']; $c->Query("SELECT * FROM fpaste"); while ($c->fetch_object()) { if ($c->r->id==$id) { ob_end_clean(); header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"" . $c->r->nimi . "\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$c->r->size); file_put_contents($c->r->nimi,$c->r->filu); readfile($c->r->filu); unlink($c->r->filu); die(); } } } else { $ech='<form action="?" method="post" enctype="multipart/form-data"><input type="hidden" name="filu" value="1" /> Tiedosto: <input type="file" name="filu" /> <input type="submit" value="OK" /></form>'; } $c->Disconnect(); ob_end_clean(); echo $ech; ?> </body> </html>
Jonniverran sekava, ei tästä hirviästi kyllä irti saa. Bufferoinnista pääsis helposti eroon kunhan siirtäs toiminnallisuuden heti sivun alkuun ja jättäs tulostelut sitten myöhemmälle kuten tässä nyt jo osin tehdäänkin.
Muistia kuluttamaton? Kenen muistia?
Kirjottelin tämän silloin kun en mistään mitään ymmärtänyt. Näin jälkeenpäin en enää paljon saa tuosta selvää. :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.