Hej, jag vill ladda upp word-/exceldokument f lagring i databas(nej, jag vill inte lagra dem som filer i ngn katalog ;) ). Jag har skapat tabell & fält f detta(longblob).
Hittade nedanstående som jag pillat lite med, bl a bytt ($form_data, "r") till ($form_data, "rb") eftersom jag kör på win xp
<?php
// store.php3 - by Florian Dittmer <dittmer@gmx.net>
// Example php script to demonstrate the storing of
// binary files into an sql database.
// More information can be found at
// [url]http://www.phpbuilder.com/[/url]
?>
<html>
<head><title>Store binary data into SQL Database</title></head>
<body>
<?php
if (isset($_POST['submit'])) {
include ("conn.php");
$connection = mysql_connect($host, $user, $password) or die("Kunde inte skapa koppling!");
mysql_select_db($db,$connection) or die("Kunde inte välja databas");
$data = addslashes(fread(fopen($form_data, "rb"), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO tbl_files (description, bin_data, filename, filesize, filetype) ".
"VALUES ('$strDescription','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();
echo mysql_errno($connection) . ": " . mysql_error($connection) . "\n";
print "<p>This file has the following Database ID: <b>$id</b>";
MYSQL_CLOSE();
} else {
?>
<form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="strDescription" size="40">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</body>
</html>
Felmeddelandet:
Warning: fread(): supplied argument is not a valid stream resource in C:\Apache2\htdocs\add_files\add2.php on line 24
Alltså den här raden:
$data = addslashes(fread(fopen($form_data, "rb"), filesize($form_data)));
Har läst mig till att fread "inte funkar" med min php-vers, sett förslag om att istället använda:
if (!is_readable ($binFile)) {
print ("Il file $binFile non e' leggibile!");
} else {
$handle = fopen ($binFile, 'rb');
$contents = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
$data = addslashes ($contents);
}
Men hur, att bara byta ut dem rakt av fungerar ju inte, "något mer måste ju till"?
Miljö: Apache/2.0.43 (Win32) PHP/4.3.9