timo17
Gebruiker
- Lid geworden
- 11 jun 2009
- Berichten
- 375
Goeiedag,
Ik ben aan het proberen iets te bouwen zodat mensen bestanden op mijn website kunnen uploaden en downloaden. Hiervoor heb ik een mooi scriptje gevonden en dit werkt allemaal, tot het downloaden. Daar hikt hij meestal en is het bestandje corrupt als het is gedownload.
Ik heb mijn bestanden toegevoegd in een zip bestand. Het zou fijn zijn als iemand mijn code kan nakijken en me misschien kan helpen waar het hier fout gaat. Ik heb voor de veiligheid de inloggegevens uit de bestandjes gehaald.
Het resultaat is hier zichtbaar.
http://demo.parochie-molenberg.nl/send_file.php
Uploadscript:
Downloadscript:
Weergavescript:
Alvast bedankt!
Ik ben aan het proberen iets te bouwen zodat mensen bestanden op mijn website kunnen uploaden en downloaden. Hiervoor heb ik een mooi scriptje gevonden en dit werkt allemaal, tot het downloaden. Daar hikt hij meestal en is het bestandje corrupt als het is gedownload.
Ik heb mijn bestanden toegevoegd in een zip bestand. Het zou fijn zijn als iemand mijn code kan nakijken en me misschien kan helpen waar het hier fout gaat. Ik heb voor de veiligheid de inloggegevens uit de bestandjes gehaald.
Het resultaat is hier zichtbaar.
http://demo.parochie-molenberg.nl/send_file.php
Uploadscript:
PHP:
<?php
// Check if a file has been uploaded
if(isset($_FILES['uploaded_file'])) {
// Make sure the file was sent without errors
if($_FILES['uploaded_file']['error'] == 0) {
// Connect to the database
$dbLink = new mysqli('parochie-molenberg.nl', 'user', 'pass', 'DB');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Gather all required data
$name = $dbLink->real_escape_string($_FILES['uploaded_file']['name']);
$mime = $dbLink->real_escape_string($_FILES['uploaded_file']['type']);
$data = $dbLink->real_escape_string(file_get_contents($_FILES ['uploaded_file']['tmp_name']));
$size = intval($_FILES['uploaded_file']['size']);
// Create the SQL query
$query = "INSERT INTO `file` (`name`, `mime`, `size`, `data`, `created`)
VALUES ('{$name}', '{$mime}', {$size}, '{$data}', NOW())";
// Execute the query
$result = $dbLink->query($query);
// Check if it was successfull
if($result) {
echo 'Success! Your file was successfully added!';
}
else {
echo 'Error! Failed to insert the file'
. "<pre>{$dbLink->error}</pre>";
}
}
else {
echo 'An error accured while the file was being uploaded. '
. 'Error code: '. intval($_FILES['uploaded_file']['error']);
}
// Close the mysql connection
$dbLink->close();
}
else {
echo 'Error! A file was not sent!';
}
// Echo a link back to the main page
echo '<p>Click <a href="send_file.php">here</a> to go back</p>';
?>
Downloadscript:
PHP:
<?php
// Make sure an ID was passed
if(isset($_GET['id'])) {
// Get the ID
$id = intval($_GET['id']);
// Make sure the ID is in fact a valid ID
if($id <= 0) {
die('The ID is invalid!');
}
else {
// Connect to the database
$dbLink = new mysqli('parochie-molenberg.nl', 'user', 'pass', 'DB');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Fetch the file information
$query = "
SELECT `mime`, `name`, `size`, `data`
FROM `file`
WHERE `id` = {$id}";
$result = $dbLink->query($query);
if($result) {
// Make sure the result is valid
if($result->num_rows == 1) {
// Get the row
$row = mysqli_fetch_assoc($result);
// Print headers
header("Content-Type: ". $row['mime']);
header("Content-Length: ". $row['size']);
header("Content-Disposition: attachment; filename=". $row['name']);
// Print data
echo $row['data'];
}
else {
echo 'Error! No image exists with that ID.';
}
// Free the mysqli resources
@mysqli_free_result($result);
}
else {
echo "Error! Query failed: <pre>{$dbLink->error}</pre>";
}
@mysqli_close($dbLink);
}
}
else {
echo 'Error! No ID was passed.';
}
?>
Weergavescript:
PHP:
<?php
// Connect to the database
$dbLink = new mysqli('parochie-molenberg.nl', 'user', 'pass', 'DB');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {
// Print the top of a table
echo '<table width="100%">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
</tr>';
// Print each file
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
</tr>";
}
// Close table
echo '</table>';
}
// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
// Close the mysql connection
$dbLink->close();
?>
Alvast bedankt!
Bijlagen
Laatst bewerkt: