Toon posts:

[mysql] db met exe bestanden

Pagina: 1
Acties:
  • 153 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Via een web applicatie upload ik .exe bestanden naar een mysql tabel (type: longblob)
maar zodra ik het bestand nu weer download vanuit de database werkt het bestand niet meer, en krijg ik de melding bestand is te groot voor het geheugen, weet iemand waar dit aan kan liggen ?
het gaat om bestanden van rond de 8 mb.

  • Noork
  • Registratie: Juni 2001
  • Niet online
Misschien heeft dit te maken met de maximale upload waarde. Deze staat standaard op 2MB als ik me niet vergis. Ook is de max_execution_time of max_input_time misschien te klein ingesteld om met dit soort files om te gaan.

Verwijderd

Topicstarter
de max size had ik al aangepast, en als ik het bestand download sla ik het eerst lokaal op, maar dan nog kan ik hem niet openen.

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 12-04 12:42

Yo-han

nope.

Geef eens wat meer info over de manier van opslaan in de db. Met welke functie maak je het bestand gereed voor opslag en in wat voor veld sla je het bestand op??

Verwijderd

Topicstarter
ik zet de gegevens in een db via een php formpje het veldtype is longblob

Verwijderd

Topicstarter
Dit is de code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if ($action == "upload") {
  // Ok, laten we nu het bestand in de mysql database zetten...

  include('../config/config.php');
  mysql_connect($server,$username,$password);
  mysql_select_db($db);

  if (isset($binFile) && $binFile != "none") {
    $data = addslashes(fread(fopen($binFile, "r"), filesize($binFile)));
    $strDescription = addslashes(nl2br($txtDescription));
    // Stop het bestand in database...
      $sql = "INSERT INTO bestanden ";
      $sql .= "(omschrijving, bin_data, bestandsnaam, bestandsgrootte, bestandstype, groep) ";
      $sql .= "VALUES ('$strDescription', '$data', ";
      $sql .= "'$binFile_name', '$binFile_size', '$binFile_type', '$groep')";
      $result = mysql_query($sql) or die ("<p>FOUT met de database: " . mysql_error() . "</p>");
      echo "<center><p>Het bestand is nu opgeslagen in de database!<br>";
      echo "Ga naar de <a href='bestanden.php'>lijst</a> met de bestanden toe.</p></center>";
  }
  mysql_close();

[ Voor 20% gewijzigd door gorgi_19 op 15-02-2005 14:54 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13-05 21:26

gorgi_19

Kruimeltjes zijn weer op :9

Even code tags toegevoegd :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Billie
  • Registratie: Januari 2003
  • Laatst online: 14-05 06:55
Heb je al eens de MD5 waarde van de .exe voor het uploaden vergeleken met de MD5 waarde van de .exe die je download? Volgens mij krijg je namelijk niet exact dezelfde file terug? :?

Verwijderd

Topicstarter
Nee heb ik niet vergeleken, hoe doe ik dat? :)
En ik denk dat die idd niet hetzelfde is... maar de vraag is dus hoe los ik dat op ;)

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 21-04 16:00
PHP:
1
 $data = addslashes(fread(fopen($binFile, "r"), filesize($binFile)));


Gaat niet werken he, addslashes op binaire data

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39
Waarom zet je .exe file in een Database? Is het niet handiger om die .exe file gewoon in een mapje op de server te zetten en alleen een verwijzig cq path naar de .exe in de database.

PHP scripts mogen maximaal, standaard, 8 megabyte geheugen opslokken in je php.ini kun je die waarde instellen.

[ Voor 26% gewijzigd door Sybr_E-N op 15-02-2005 16:51 ]


  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 23:24
Je moet zowel upload_max_filesize als memory_limit verhogen in je php.ini om grote(re) uploads mogelijk te maken, en eventueel ook je max_input_time indien je verbinding te traag is om alles binnen de timeout te kunnen uploaden. En zulke grote files altijd buiten je database houden i.v.m. performance, veel makkelijk is om de PHP-tempname op te slaan en alleen te verwijzen naar het bestand.

Verwijderd

Topicstarter
het uploaden is geen probleem.. maar bestanden .exe bestanden werken niet meer. nadat ze in de db gezet zijn en eruti gehaald worden.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Sybr_E-N:
Waarom zet je .exe file in een Database? Is het niet handiger om die .exe file gewoon in een mapje op de server te zetten en alleen een verwijzig cq path naar de .exe in de database.
* drm agrees
PHP scripts mogen maximaal, standaard, 8 megabyte geheugen opslokken in je php.ini kun je die waarde instellen.
Ook per pagina in te stellen: ini_set ( 'memory_limit', '8M' )

(gek genoeg...)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • simon
  • Registratie: Maart 2002
  • Laatst online: 13-05 17:26
Je hele db volproppen met .exe files :X Je kan beter dus die verwijzing doen, belast je MySQL veel minder mee en is makkelijker en overzichtelijker...

|>


  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

base64 encodig?

Verwijderd

Topicstarter
ik zet die bestanden in een db omdat ze dan beter af te schermen zijn.. het gaat om bestanden die maar 1 maal gedownload mogen worden per gebruiker.. als ik bestanden gewoon in mn www map upload kun je er altijd bij.. althans ik had er zo gauw geen andere oplossing voor :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

razzle_:
althans ik had er zo gauw geen andere oplossing voor :)
Als je ze uit de database kan trekken, kan je ze ook vanaf 't filesystem trekken. hint.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ja ik kan ze ook wel van het filesysteem trekken.. maar dan is het niet zo goe dte beveiligen, dat werkelijk elke gebruiker het betreffende bestand maar 1 keer kan downloaden, tenminste ik zou niet weten hoe.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Als je ze in de db zet, wordt 't via een php-bestandje o.i.d. opgehaald, right? Als je in dat php-bestandje i.p.v. de data uit de db de data van het filesystem haalt, kun je tellen, right? Is het dan nodig dat de bestanden zelf via HTTP te bereiken zijn? Nee. Dan is het dus simpel: je ontzegt users de toegang tot de directory waar de bestanden (zelf) in staan, of zet de bestanden op een plaats die uberhaupt niet via HTTP te bereiken is.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 23:24
Ofwel plaats ze buiten je webroot en stuur ze naar je gebruiker met een correcte header() en fopen() en houdt het aantal downloads gewoon in je database bij.
Pagina: 1