Avatar billede mads1987 Nybegynder
11. april 2003 - 18:38 Der er 29 kommentarer og
1 løsning

Submit knap og PHP

Jeg har fået en kode ud fra denne artikel, som beskriver hvordan jeg kan gemme filer i en database.

Han siger:
Man laver en form med en input af typen "file", og selvfølgelig en submit-knap. Når formen submittes, skal scriptet meget simpelt åbne filen, læse fil-koden ind i en variable, og tilsidst skrive det i et felt af typen 'blob', 'mediumblob' eller 'longblob' i databasen.

:-) Hvordan gør jeg det?

Håber i kan hjælpe!

Mvh
Avatar billede mads1987 Nybegynder
11. april 2003 - 18:39 #1
Avatar billede schaefner Juniormester
11. april 2003 - 18:41 #2
Prøv at kopier koden ind i et dokument ;)
Avatar billede schaefner Juniormester
11. april 2003 - 18:42 #3
Det hele bliver gennemgået i artiklen.
Avatar billede mads1987 Nybegynder
11. april 2003 - 18:43 #4
Det kommer der ikke nogen submit eller input knap af? Det er ren PHP?
Avatar billede schaefner Juniormester
11. april 2003 - 18:43 #5
echo '<form action="Filer_i_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="form_data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';

Den vil udskrive en form.
Avatar billede schaefner Juniormester
11. april 2003 - 18:44 #6
Men du kan sagtens bare lave den sådan:

<form action="Filer_i_mysql.php" method="post" enctype="multipart/form-data">
Select file: <input type="file" name="form_data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>
<input type="submit">
</form>
Avatar billede mads1987 Nybegynder
11. april 2003 - 18:55 #7
Arh! Sorry :0) Hvad skal jeg kalde den tabel jeg opretter? Og hvor mange felter skal den være på?
Avatar billede schaefner Juniormester
11. april 2003 - 19:07 #8
Du kan se koden her nedenunder

CREATE TABLE files (
id int(11) DEFAULT '0' NOT NULL auto_increment,
file_code blob NOT NULL,
ffile_size int(50) DEFAULT '0' NOT NULL,
file_type varchar(50) NOT NULL,
PRIMARY KEY (id)
);

Du kan enten selv lave felterne eller køre ovenstående kode inde phpMyAdmin
Avatar billede tipsen Nybegynder
11. april 2003 - 19:08 #9
Prøv med:

CREATE TABLE files (
id int(11) DEFAULT '0' NOT NULL auto_increment,
file_code blob NOT NULL,
file_size int(50) DEFAULT '0' NOT NULL,
file_type varchar(50) NOT NULL,
PRIMARY KEY (id)
);
Avatar billede schaefner Juniormester
11. april 2003 - 19:10 #10
ffile_size int(50) DEFAULT '0' NOT NULL,
det første f skal lige fjernes ;o)
Avatar billede benzon Praktikant
11. april 2003 - 23:18 #11
koden er ikke up2date, virker ikke med Registerd Globals....
Avatar billede benzon Praktikant
11. april 2003 - 23:43 #12
der ud over dumt den læser hele filen 1 et chunk altså en luns skal nok lige se om jeg får tid til at komme med et oplæg som burde virke på alle servere med php :)
Avatar billede mads1987 Nybegynder
12. april 2003 - 01:29 #13
Det ville være rigtig lækkert! :)
Avatar billede benzon Praktikant
12. april 2003 - 03:03 #14
<?php
// files in mysql by Jonas Delfs & Edited by BenZoN
// jonas@delfs.dk & benzon@fald.dk
// http://php.delfs.dk

// CREATE TABLE files (
// id int(11) DEFAULT '0' NOT NULL auto_increment,
// file_code blob NOT NULL,
// file_size int(50) DEFAULT '0' NOT NULL,
// file_type varchar(50) NOT NULL,
// PRIMARY KEY (id)
// );
$sti = "upload/";

if ($HTTP_POST_FILES['userfile']['tmp_name'] && $HTTP_POST_FILES['form_data']['tmp_name'] != "none") {
    $uploadfil = $HTTP_POST_FILES['userfile']['tmp_name'];
    $uploadname = $HTTP_POST_FILES['userfile']['name'];
    $uploadsize = $HTTP_POST_FILES['userfile']['size'];
    $uploadtype = $HTTP_POST_FILES['userfile']['type'];
    move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$sti$uploadname");
    $file_code = "";
    $fp = fopen("$sti$uploadname", "rb");
    while(!feof($fp)) {
    $file_code .= fread($fp, 1024);
    }
    fclose($fp);
    $file_code = addslashes($file_code);
    $file_code = addcslashes($file_code, "\0");
    $connect = mysql_connect("localhost","benzon","250883");
    mysql_select_db("benzon",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type) values ('$file_code', '$uploadsize', '$uploadtype')")) {
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="file_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="userfile">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede benzon Praktikant
12. april 2003 - 03:07 #15
der mangler en størelses styring tror jeg har en ide om jeg ikke lige har fået det med men det må du lige sige til vis det er du mangler :)
Avatar billede benzon Praktikant
12. april 2003 - 03:18 #16
hov der mangler 1 ting mere 2 sec den skal sku være helt på plads den der hehe
Avatar billede benzon Praktikant
12. april 2003 - 03:22 #17
Glemte at unlinke den fil vi lagde i mappen upload hehe den skal jo ikke blive der den skal jo bare slettes igen efter den er smidt op i mysql databasen :)

<?php
// files in mysql by Jonas Delfs
// jonas@delfs.dk
// http://php.delfs.dk

// CREATE TABLE files (
// id int(11) DEFAULT '0' NOT NULL auto_increment,
// file_code blob NOT NULL,
// file_size int(50) DEFAULT '0' NOT NULL,
// file_type varchar(50) NOT NULL,
// PRIMARY KEY (id)
// );
$sti = "upload/";

if ($HTTP_POST_FILES['userfile']['tmp_name'] && $HTTP_POST_FILES['form_data']['tmp_name'] != "none") {
    $uploadfil = $HTTP_POST_FILES['userfile']['tmp_name'];
    $uploadname = $HTTP_POST_FILES['userfile']['name'];
    $uploadsize = $HTTP_POST_FILES['userfile']['size'];
    $uploadtype = $HTTP_POST_FILES['userfile']['type'];
    move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$sti$uploadname");
    $file_code = "";
    $fp = fopen("$sti$uploadname", "rb");
    while(!feof($fp)) {
    $file_code .= fread($fp, 1024);
    }
    fclose($fp);
    $file_code = addslashes($file_code);
    $file_code = addcslashes($file_code, "\0");
    $connect = mysql_connect("localhost","benzon","250883");
    mysql_select_db("benzon",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type) values ('$file_code', '$uploadsize', '$uploadtype')")) {
        unlink("$sti$uploadname");
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="file_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="userfile">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede benzon Praktikant
12. april 2003 - 03:22 #18
arhg failer rundt lige nu
Avatar billede benzon Praktikant
12. april 2003 - 03:22 #19
<?php
// files in mysql by Jonas Delfs & Edited by BenZoN
// jonas@delfs.dk & benzon@fald.dk
// http://php.delfs.dk

// CREATE TABLE files (
// id int(11) DEFAULT '0' NOT NULL auto_increment,
// file_code blob NOT NULL,
// file_size int(50) DEFAULT '0' NOT NULL,
// file_type varchar(50) NOT NULL,
// PRIMARY KEY (id)
// );
$sti = "upload/";

if ($HTTP_POST_FILES['userfile']['tmp_name'] && $HTTP_POST_FILES['form_data']['tmp_name'] != "none") {
    $uploadfil = $HTTP_POST_FILES['userfile']['tmp_name'];
    $uploadname = $HTTP_POST_FILES['userfile']['name'];
    $uploadsize = $HTTP_POST_FILES['userfile']['size'];
    $uploadtype = $HTTP_POST_FILES['userfile']['type'];
    move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$sti$uploadname");
    $file_code = "";
    $fp = fopen("$sti$uploadname", "rb");
    while(!feof($fp)) {
    $file_code .= fread($fp, 1024);
    }
    fclose($fp);
    $file_code = addslashes($file_code);
    $file_code = addcslashes($file_code, "\0");
    $connect = mysql_connect("localhost","benzon","250883");
    mysql_select_db("benzon",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type) values ('$file_code', '$uploadsize', '$uploadtype')")) {
        unlink("$sti$uploadname");
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="file_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="userfile">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede benzon Praktikant
12. april 2003 - 03:27 #20
lol godt at det er min egen maskine der er testet på LOL

Har jo skrevet login til min mysql db lul

<?php
// files in mysql by Jonas Delfs & Edited by BenZoN
// jonas@delfs.dk & benzon@fald.dk
// http://php.delfs.dk

// CREATE TABLE files (
// id int(11) DEFAULT '0' NOT NULL auto_increment,
// file_code blob NOT NULL,
// file_size int(50) DEFAULT '0' NOT NULL,
// file_type varchar(50) NOT NULL,
// PRIMARY KEY (id)
// );
$sti = "upload/";

if ($HTTP_POST_FILES['userfile']['tmp_name'] && $HTTP_POST_FILES['form_data']['tmp_name'] != "none") {
    $uploadfil = $HTTP_POST_FILES['userfile']['tmp_name'];
    $uploadname = $HTTP_POST_FILES['userfile']['name'];
    $uploadsize = $HTTP_POST_FILES['userfile']['size'];
    $uploadtype = $HTTP_POST_FILES['userfile']['type'];
    move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$sti$uploadname");
    $file_code = "";
    $fp = fopen("$sti$uploadname", "rb");
    while(!feof($fp)) {
    $file_code .= fread($fp, 1024);
    }
    fclose($fp);
    $file_code = addslashes($file_code);
    $file_code = addcslashes($file_code, "\0");
    $connect = mysql_connect("localhost","******","******");
    mysql_select_db("******",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type) values ('$file_code', '$uploadsize', '$uploadtype')")) {
        unlink("$sti$uploadname");
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="file_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="userfile">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede benzon Praktikant
12. april 2003 - 03:33 #21
det køre for mig nå men what ever....

Vi uploader filen til en mappe du selv sætter i $sti grunden er at ikke alle servere kan vi læse direkte fra Temp diret, derfor går vi ind og har en mappe på server hvor vi uploader filen til og slf er mappen chmodet med fuld chmod.

når vi så har filen i den mappe vi vil læser vi filen og det gør vi i små bider så der ikke sker fejl hved støre filer :)

Nu er vi så godt på vej der efter lægger den det i mysql databasen du har oprettet til det og så det så er done så unlinker den filen altså sletter den uploadede fil fra mappen af og nu har du så din fil i mysql databasen i stedet :)
Avatar billede benzon Praktikant
12. april 2003 - 14:04 #22
og ja skulle ha været et svar....
Avatar billede benzon Praktikant
12. april 2003 - 19:31 #23
Er lige igang med at tilføje nogle ændringer sad lige og legede lidt mere med det her idag og jeg fandt et par ting der kunne gøres lidt bedre skal nok lige smide det op her :)

Der ud over burde der også ligge et Optimize parameter i scriptet så mysql er total optimeret hele tiden det er også addet i det jeg arbejder med og selve fil navn er også addet :)
Avatar billede benzon Praktikant
12. april 2003 - 19:38 #24
der ud over selve udprint delen har jeg også kigget lidt på vis det er disideret filer vi har med og gøre så har jeg lave et udprint script der kalder filen dens respektive navn billed output skal bare bruge det samme dog med 1 linie mindre :)

<?php

$connect = mysql_connect("localhost","******","******");
mysql_select_db("******",$connect);

$q = mysql_query("SELECT file_code,file_type,file_name FROM files WHERE id='$id'") or die(mysql_error());
if (mysql_num_rows($q)) {
    extract(mysql_fetch_array($q));

    header("Content-type: $file_type");
    header("Content-Disposition: attachment; filename=$file_name");
    echo $file_code;
} else {
    echo "404 - file not found!";
}
?>

Vis du skal bruge det til billeder fjerner du denne linie
    header("Content-Disposition: attachment; filename=$file_name");

Det den faktisk gør er at selve filen får sit rigtige navn og ikke bare heder eks. file_mysql_download.*
* = jpg eller exe and so on

Men den linie tvinger brugeren til at downloade det vil sige måden er ikke god vis du ønsker at bruge det til at printe billeder ud med :)
Avatar billede benzon Praktikant
12. april 2003 - 19:44 #25
<?php
// files in mysql by BenZoN

// CREATE TABLE files (
//  id int(11) NOT NULL auto_increment,
//  file_code longblob NOT NULL,
//  file_size int(50) NOT NULL default '0',
//  file_type varchar(50) NOT NULL default '',
//  file_name varchar(255) NOT NULL default '',
//  PRIMARY KEY  (id)
// ) TYPE=MyISAM;
$sti = "upload/";

if ($HTTP_POST_FILES['userfile']['tmp_name'] && $HTTP_POST_FILES['form_data']['tmp_name'] != "none") {
    $uploadfil = $HTTP_POST_FILES['userfile']['tmp_name'];
    $uploadname = $HTTP_POST_FILES['userfile']['name'];
    $uploadsize = $HTTP_POST_FILES['userfile']['size'];
    $uploadtype = $HTTP_POST_FILES['userfile']['type'];
    move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$sti$uploadname");
    $file_code = "";
    $fp = fopen("$sti$uploadname", "rb");
    while(!feof($fp)) {
    $file_code .= fread($fp, 1024);
    }
    fclose($fp);
    $file_code = addslashes($file_code);
    $file_code = addcslashes($file_code, "\0");
    $connect = mysql_connect("localhost","******","******");
    mysql_select_db("******",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type, file_name) values ('$file_code', '$uploadsize', '$uploadtype', '$uploadname')")) {
      mysql_query("OPTIMIZE TABLE `files`");
      unlink("$sti$uploadname");
      echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="file_mysql.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="userfile"><br>';
echo '<input type="submit">';
echo '</form>';
?>
Avatar billede benzon Praktikant
12. april 2003 - 22:49 #26
Okay i stedet for alt det her rod jeg har skrevet her har jeg lige brugt lidt tid på indrykning og at smide det op som en phps fil så du nemmere kan overskue det jeg har lavet.

Denne fil indeholder upload delen af scriptet :)
http://benzon.users.whitehat.dk/file_mysql_opload.phps

Denne fil indeholder en download del så folk kan downloade en exe fil med dens rigtige navn eks. du uploader en fil der heder php.exe så bliver den også downloadet som php.exe :)
http://benzon.users.whitehat.dk/file_mysql_download.phps

Denne fil er egnet til brug at hente billed filer ud fra mysql den kan også god bruges til at downloade med men så bliver fil navnet ikke php.exe men noget i stil med file_mysql_pic_show.exe
http://benzon.users.whitehat.dk/file_mysql_pic_show.phps

Håber dette kan bruges
De sidste to filer er originalt lavet af Jonas men jeg har ændret dem lidt begge to men slf. skal hans Credits stå der i hvor i mod det første script er lavet af mig.

Men som sagt håber et kan bruges det du har fået jeg har addet, max size på filer der ud over Optimizer den mysql tabbellen hvergang der er blevet lagt en fil op og den sletter slf. den uploadede fil fra den mappe du har valgt at sætte i $sti :)
Avatar billede benzon Praktikant
12. april 2003 - 22:55 #27
nå fjernede lige optimize af tabbellen da det kan skabe probs.
Avatar billede tipsen Nybegynder
12. april 2003 - 23:04 #28
et stk. monolog af benzon... :-)
Avatar billede benzon Praktikant
12. april 2003 - 23:19 #29
max tipsen :D jeg går jo total amok haha :D Jeg føre så meget samtale med mig selv det halve jo kunne være løgn hehe :D

Men wtf. det går jo nok :D
Avatar billede mads1987 Nybegynder
13. april 2003 - 22:12 #30
Undskyld jeg ikke har været her til at snakke lidt med dig! Men nu er jeg her, og vil prøve det! :0)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester