Ich verwende ein Skript, um Bilder auf einen Server hochzuladen. Es verwendet Ajax, um das Bild in ein PHP-Skript zu posten, wo das Bild nach der Validierung einen eindeutigen Dateinamen erhält, bevor es in einem Verzeichnis gespeichert wird. Ich versuche zu verstehen, wie der neue Dateiname des Bildes wieder auf meine Formularseite als eine Variable gebracht wird, wo ich dann diese neue Variable verwenden kann, zum Beispiel echo es in <?php echo "new_file_name"?>
. Jede Hilfe würde wirklich geschätzt werden.Wie kann man eine Variable in einer Ajax-Antwort zurückgeben?
my_form_page.php
<div id="preview"><img src="no-image.jpg" /></div>
<form id="form" action="ajaxupload.php" method="post" enctype="multipart/form-data">
<input id="uploadImage" type="file" accept="image/*" name="image" />
<input id="button" type="submit" value="Upload">
</form>
<div id="err"></div>
<h2>The new file name is: <?php echo "new_file_name"?></h2>
Die jquery
$(document).ready(function (e) {
$("#form").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "ajaxupload.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
beforeSend : function()
{
//$("#preview").fadeOut();
$("#err").fadeOut();
},
success: function(data)
{
if(data=='invalid')
{
// invalid file format.
$("#err").html("Invalid File !").fadeIn();
}
else
{
// view uploaded file.
$("#preview").html(data).fadeIn();
$("#file_name").html(data).fadeIn();
$("#form")[0].reset();
}
},
error: function(e)
{
$("#err").html(e).fadeIn();
}
});
}));
});
ajaxupoad.php
<?php
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif', 'bmp'); // valid extensions
$path = 'uploads/'; // upload directory
if(isset($_FILES['image']))
{
$img = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
// get uploaded file's extension
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
// can upload same image using rand function
$final_image = rand(1000,1000000).$img;
// check's valid format
if(in_array($ext, $valid_extensions))
{
$path = $path.strtolower($final_image);
if(move_uploaded_file($tmp,$path))
{
echo "<img src='$path' />";
}
}
else
{
echo 'invalid';
}
}
?>
zu ändern Haben Sie die AJAX-Request/Response in den Browser-Entwickler-Tools beobachtet? Haben Sie die jQuery-Bibliothek in das Projekt aufgenommen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –
Das Skript funktioniert gut, es gibt das gerade hochgeladene Bild zurück. Ich weiß einfach nicht, wie ich die Variable $ final_image zurück in das ursprüngliche Formular bringen soll. Betrachtet man Firebug-Konsole kann ich die Antwort sehen "", wenn ich ein Bild namens tree.jpg hochladen – JulianJ
Wenn das die Antwort ist, können Sie es mit JS analysieren, um das Bit, das Sie wollen, aber Sie würden kein PHP-Echo verwenden . Sie würden das Bild nur einem ausgewählten Objekt zuweisen und das Bild sollte erscheinen. –