laden Sie eine vorhandene Datei mit codeigniter
Ich bin versucht, eine website, die download-jpg -, png -, pdf -, docx-Datei sind diese hochgeladen, indem Sie ein admin.
hochladen von solchen Inhalten arbeitet ohne problem. beim hochladen ich einfügen, dass die Datei-Namen in der mysql-Tabelle als auch. mithilfe dieser Tabelle, die ich bin, zeigt die hochgeladene Datei-Namen für die Benutzer.
dies ist der code, den ich bin für die Anzeige dieser Dateien.
<?php
if (!empty($downloads)) {
foreach ($downloads as $val) {
?> <div class="col-md-3 col-sm-6 col-xs-12">
<div class="panel panel-danger">
<div class="panel-heading panel-title">
<?php echo $val['upload_description']; ?>
</div>
<div class="panel-body">
<?php echo $val['file_name']; ?>
<div class="clear-fix clear clearfix"></div>
<div id="download" onclick="downloadFile('<?php echo $val['file_name']; ?>');" class="btn btn-danger">Download</div>
</div>
</div>
</div>
<?php
}
}
?>
und das ist mein ajax-code
function downloadFile(str) {
//alert(str);
$.ajax({
type: 'POST',
url: 'downloadfiles',
data: {value: str},
success: function(data) {
alert('ok' + data);
}
});
}
wenn einige klicken Sie auf den download-button, mit ajax und jquery-ich bin das senden der Datei-name zu einer download_controller.
dies ist die Funktion in der download_controller Datei
public function download_files() {
$fileName = $this->input->post('value');
$file_path = 'uploaded/' . $fileName;
$this->_push_file($file_path, $fileName);
}
function _push_file($path, $name) {
$this->load->helper('download');
//make sure it's a file before doing anything!
if (is_file($path)) {
//required for IE
if (ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}
//get the file mime type using the file extension
$this->load->helper('file');
$mime = get_mime_by_extension($path);
//Build the headers to push out the file properly.
header('Pragma: public'); //required
header('Expires: 0'); //no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Cache-Control: private', false);
header('Content-Type: ' . $mime); //Add the mime type from Code igniter.
header('Content-Disposition: attachment; filename="' . basename($name) . '"'); //Add the file name
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($path)); //provide file size
header('Connection: close');
readfile($path); //push it out
exit();
}
}
aber der Download nie ab. wenn Sie versuchen, laden Sie eine png-Datei, ich bin immer diese Art von Nachricht.
kann jemand mir sagen, was falsch ist, was ich bin tun Sie hier?
danke
- Haben Sie zum download der Datei durch Ajax? wenn Sie den link zu
downloadfiles
url, wird es laden Sie die Datei herunter und bleiben Sie auf der gleichen Seite. - haben Sie versucht, force_download?
- können Sie bitte geben Sie mir den richtigen Weg, dies zu tun? noch konnte ich nicht richtig danke
- ja, habe ich. aber die gleiche Sache geschehen.
- Versuchen Sie es mit
header('Content-Type: application/octet-stream');
stattheader('Content-Type: ' . $mime);
- immer noch das gleiche passiert.
- Verdammt. Sie haben zum hinzufügen von
ob_clean();
vorreadfile()
. - Ich war für alle Klassen oder alle Institut für lernen, php jedes Ding war es selbst gelernt. also es könnte sein, schlechte Syntax und Fehler. wenn Sie mir geben können der beste Weg, das zu tun, ohne zu Bremsen php-code wird es hilfreich sein, zu mir. danke.
- immer noch der gleiche Chef. 🙁
- wenn Sie jetzt nicht die Antworten, bitte keine Kommentar zu Fragen. es gibt viele Menschen, die gerne anderen helfen außer dir. Danke.
- Du hast Recht. Aber warum denkst du, niemand gibt dir Antwort?
- jeder Kommentar hier wurde versucht, mir etwas Hilfe. Ich denke, Sie wird auch versucht, mir zu helfen. das ist, warum, fragte ich, mich zu korrigieren, wenn ich falsch Sache. keiner Weise mit diesen Bemerkungen, die ich mein problem lösen könnte. das bedeutet lernen. jeder kann nicht alles, was auf eigene. wir Menschen brauchen die Hilfe von anderen. wir sind keine Götter. danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich gefunden, was ich falsch gemacht habe. vielen Dank an Herrn KraneBird
Ich mein ajax-code aus diesem
zu diesem.
ohne Entsendung es zu den download_controller ich jetzt redirect auf die download_controller.
nun, es funktioniert auch ohne Fehler.
vielen Dank alle, die Ihre wertvolle Zeit verschwenden, um mir zu helfen.