Ich muss die Datei hochladen und senden Sie die hochgeladene Datei als Anhang in Mail und laden Sie die Datei von der Webseite. Der Inhalt der Datei wird in der Datenbank mit dem Datentyp mediumblob gespeichert. Das Hochladen der Datei und das Senden der Datei als Anhang funktioniert einwandfrei. Beim Herunterladen der Datei sind die Inhalte nicht im lesbaren Format. Die Inhalte sind Display alsUpload sendfile Datei als Anlage und laden Sie die Datei in PHP
PD9waHANCg0KLy8gTWFrZSBhIE15U1FMIENvbm5lY3Rpb24NCiRob3N0PSJUZWthbGFkYi5kYi45
MTM1MTgyLmhvc3RlZHJlc291cmNlLmNvbSI7DQokdXNlcj0iVGVrYWxhZGIiOw0KJHBhc3N3b3Jk
Hier ist der Code
upload.php
<?php
session_start();
// Read POST request params into global vars
include_once "db.php";
$name1=mysql_real_escape_string(stripslashes($_POST['name1']));
$subject1=mysql_real_escape_string(stripslashes($_POST['subject1']));
$email1=$_POST['email1'];
$phone=$_POST['phone'];
$username=mysql_real_escape_string($_SESSION['sess_user4']);
$to = "[email protected]";
$from=$_POST['email1'];
$fileatt = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = mysql_real_escape_string($_FILES['fileatt']['name']);
$fileatt_size = $_FILES['fileatt']['size'];
$aa=filesize($fileatt);
$headers = "From: $from";
if (is_uploaded_file($fileatt)) {
// Read the file to be attached ('rb' = read binary)
$name1=mysql_real_escape_string(stripslashes($_POST['name1']));
$file = fopen($fileatt,'r');
$content = fread($file,filesize($fileatt));
fclose($file);
$message="Name:$name1\n\n
Email:$email1\n
Subject:$subject1\n
Phone No:$phone";
// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
// Add a multipart boundary above the plain message
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
stripslashes($message). "\n\n";
// Base64 encode the file data
$content = chunk_split(base64_encode($content));
// Add file attachment to the message
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$content . "\n\n" .
"--{$mime_boundary}--\n";
}
// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
echo "<script>window.open('display.php','_self')</script>";
} else {
echo "<p>Mail could not be sent. Sorry!</p>";
}
$query = "INSERT INTO register (name,type,size,content,name1,email1,subject1,phone,username) VALUES ('$fileatt_name','$fileatt_type','$fileatt_size','$content','$name1','$email1','$subject1','$phone','$username')";
mysql_query($query) or die('Error, query failed');
?>
download.php
<html>
<head>
<title>Download File From MySQL Database</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<?php
include_once "db.php";
if(isset($_GET['id'])) { // if id is set then get the file with the id from database
$id = $_GET['id'];
$content = chunk_split(base64_decode($content));
$query = "SELECT name, type, size, content FROM register WHERE id = $id";
$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content; exit;
}
$query = "SELECT id, name FROM register";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "Database is empty";
}
else
{
while(list($id, $name) = mysql_fetch_array($result))
{
?>
<a href="download.php?id=<?php echo $id;?>"><?php echo $name; ?></a>
<?php
}
}
?>
</body>
</html>
Wenn der obige Code auch das Problem ist das gleiche. Die hochgeladene Datei liest den Inhalt, während die heruntergeladene Datei den Inhalt wie folgt liest. UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA – user6582683
wie Sie base64 die Datei verschlüsselt haben, ich glaube, das einzige, was hier ist base64 DECODE –
fehlt und natürlich müssen Sie chunk_split zurückkehren;) durch neue Linien zu entfernen –