Ich habe bereits versucht, so ziemlich alles zu recherchieren, aber ich habe nicht die endgültige Lösung gefunden, um meinen Code zu reparieren. Wie Sie im Debug-Image sehen können, kann die Datei prop gelesen werden. In PHP ist das Ergebnis print_r($_FILES); exit;
ein leeres Array. Das Problem scheint zu sein event.preventDefault();
. Das Senden muss sein, prevent
aber die Datei muss noch generiert werden.
$("#cardgeneratorForm").on("submit", function (event) {
event.preventDefault();
var artworkimageinput = $('#inputPicture').prop('files')[0];
var artworkimage = new FormData();
artworkimage.append('file', artworkimageinput);
$.ajax({
url: 'generatecard.php',
method: 'POST',
data: {
artworkimage: artworkimage,
},
cache: false,
processData: false,
contentType: false,
success : function(filename){
},
fail: function(){
}
});
PHP
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
move_uploaded_file($_FILES['file']['tmp_name'], 'artwork/' . $_FILES['file']['name']);
}
HTML
<form class="cardgeneratorForm" id="cardgeneratorForm" method="post" enctype="multipart/form-data" action="generatecard.php">
<div class="inputPicture-container custom-file col-12">
<input type="file" name="file" class="custom-file-input" accept='.jpg, .jpeg, .png, .webp' id="inputPicture" lang="en">
<label class="custom-file-label" for="inputPicture">Card Picture</label>
</div>
<button class="btn btn-primary btn-block btn-xs reset-button">
<span><i class="fas fa-redo"></i>Reset</span>
</button>
</form>
Hier erfahren Sie, wie Sie dies tun können.
$('#cardgeneratorForm').on('submit',function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
method:$(this).attr('method'), //dynamically getting the method of the form
url: $(this).attr('action'), //dynamically getting the action of the form
data:formData,
cache:false,
contentType: false,
processData: false,
success:function(data){
console.log("success");
console.log(data);
},
error: function(data){
console.log("error");
console.log(data);
}
});
});
Starten Sie den Upload sofort nach Auswahl der Datei (optional)
$("#inputPicture").on("change", function() {
$("#cardgeneratorForm").submit();
});
Ich habe einige zusätzliche Klammern entfernt und jetzt funktioniert es.
Ich hoffe es hilft!!
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen