slevinkelevra Δημοσ. 23 Αυγούστου 2013 Δημοσ. 23 Αυγούστου 2013 Καλησπερα Εχω φτιαξει κωδικα που χρησιμοποιω το drag'n'drop της HTML5 μαζι με το XHR2 για να κανω upload εικονων σε σερβερ. Στον σερβερ το αρχειο που κανονιζει την αποθηκευση κτλ ειναι σε php. Θελω να πεταει τα καταλληλα μηνυματα στον client , οπως "Saved", "Error" , "Not An Image" κτλ Ο ποιο απλος τροπος που σκεφτηκα ειναι στον σερβερ να βαλω header('Location:multinsert2.php?er1=1'); και στον client if ($_GET['er1']) {echo 'Saved.</br>';} Και οπως καταλαβατε, δεν δουλευει. Η εικονα αποθηκευετε κανονικοτατα, αλλα δεν πεταει τα αντιστοιχα μηνυματα. Το αρχειο στον σερβερ περιεχει μονο php και το αρχειο του client εχει καταληξη .php Μηπως δεν δουλευει επειδη στον client χρησιμοποιω javascript και οχι την "παραδοσιακη" φορμα για upload? Το λεω επειδη δινω στον χρηστη την εναλλακτικη να ανεβασει χρησιμοποιωντας τη φορμα και οταν το κανει με φορμα, τα μυνηματα εμφανιζονται κανονικοτατα. Εχω κολλησει, δε μπορω να σκεφτω κατι για να το λυσω... Καμια βοηθεια? Ο κωδικας.... client side file ονοματι multinsert2.php, κομματια κωδικα για upload και εμφανιση μηνυματων var xhr = new XMLHttpRequest(); xhr.open('POST', 'upload.php'); xhr.onload = function() { if (xhr.status === 200) { progress.value = progress.innerHTML = 100; alert('all ok'); } else {alert('hmmm, not today');} }; xhr.send(formData); <?php if ($_GET['er1']) {echo 'error.</br>';} if ($_GET['er2']) {echo 'uploaded.</br>';} if ($_GET['er3']) {echo 'image already exists.</br>';} if ($_GET['er4']) {echo 'saved.</br>';} if ($_GET['er5']) {echo 'error, invalid file.</br>';} ?> και σερβερ side , αποθηκευση και δημιουργια μηνυματων για client if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 4000000)) if ($_FILES["file"]["error"] > 0) { header('Location:multinsert2.php?er1=1');//error } else {header('Location:multinsert2.php?er2=1');//uploaded } if (file_exists("cultmapsite/upload" . $_FILES["file"]["name"])) { header('Location:multinsert2.php?er3=1');//image already exists } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); header('Location:multinsert2.php?er4=1');//saved } } } else { header('Location:multinsert2.php?er5=1');//error, invalid file } Ευχαριστω...
Uberalles_gr Δημοσ. 23 Αυγούστου 2013 Δημοσ. 23 Αυγούστου 2013 Αντί για την XMLHttpRequest μπορείς να χρησιμοποιήσεις jquery. Τώρα στο θέμα μας. Υπάρχει η index.php όπου καλείς την upload.php μέσω του XMLHttpRequest. Η σελίδα upload.php κάνει ΧΧΧΧ πράγματα και μπορείς να γυρίσεις ΧΧΧΧΧ περιεχόμενο στην σελίδα που κάλεσες την upload.php, δηλαδή την index.php Αυτό γίνεται ως εξής, θα προσπαθήσω να το πω όσο πιο απλά γίνεται: στην upload.php ότι είναι HTML αυτό γυρνάει πίσω. Δηλαδή εάν γράψεις ένα <div>Hello</div> ή σε php echo "<div>Hello</div>"; αυτό μπορείς να το πάρεις στην index.php ΜΕΣΩ javascript και να το διαχειριστείς. Τώρα για να πάρεις το περιεχόμενο που επιστρέφει η upload.php, στην index.php γράφεις var xhr = new XMLHttpRequest(); xhr.open('POST', 'upload.php'); xhr.onload = function() { if (xhr.status === 200) { data = xhr.responseText; alert(data); } else {alert('hmmm, not today');} }; xhr.send(formData); 1
slevinkelevra Δημοσ. 23 Αυγούστου 2013 Μέλος Δημοσ. 23 Αυγούστου 2013 Site: Ρε φίλε, ευχαριστω πολύ, είχε κολλήσει το μυαλο μου με την php και ουτε που σκεφτηκα να εκμεταλευτω το XHR... Δουλεψε ακριβως με τον τρόπο που ειπες. Μαλλον πρεπει να κανω πιο συχνα διαλειματα...
Uberalles_gr Δημοσ. 23 Αυγούστου 2013 Δημοσ. 23 Αυγούστου 2013 Δεν κάνει τίποτα. Να σου υπενθυμίσω ότι καλό θα ήταν να αφήσεις σιγά σιγά το XMLHttpRequest και να χρησιμοποιήσεις jquery.
παπι Δημοσ. 23 Αυγούστου 2013 Δημοσ. 23 Αυγούστου 2013 Γιατι κανεις ελεγχο στο server; Καντο στο client.
Uberalles_gr Δημοσ. 25 Αυγούστου 2013 Δημοσ. 25 Αυγούστου 2013 Μόνο στο server γίνεται upload η φώτο.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα