Περισσότερα
Λήψη αρχείου χρησιμοποιώντας Javascript/jQuery
Έχω μια πολύ παρόμοια απαίτηση που καθορίζεται εδώ.
Πρέπει να έχω το πρόγραμμα περιήγησης του χρήστη'να ξεκινήσει μια λήψη χειροκίνητα όταν $('a#someID').click();
Αλλά δεν μπορώ να χρησιμοποιήσω τη μέθοδο window.href
, αφού αντικαθιστά τα τρέχοντα περιεχόμενα της σελίδας με το αρχείο που προσπαθείς να κατεβάσεις.
Αντ' αυτού θέλω να ανοίξω τη λήψη σε νέο παράθυρο/καρτέλα. Πώς είναι αυτό δυνατό;
322
3
Χρησιμοποιήστε ένα αόρατο
<iframe>
:Για να αναγκάσετε το πρόγραμμα περιήγησης να κατεβάσει ένα αρχείο που διαφορετικά θα ήταν ικανό να αποδώσει (όπως αρχεία HTML ή κειμένου), θα πρέπει ο διακομιστής να ορίσει τον MIME Type του αρχείου σε μια μη λογική τιμή, όπως
application/x-please-download-me
ή εναλλακτικάapplication/octet-stream
, που χρησιμοποιείται για αυθαίρετα δυαδικά δεδομένα.Αν θέλετε να το ανοίξετε μόνο σε μια νέα καρτέλα, ο μόνος τρόπος για να το κάνετε αυτό είναι να κάνει ο χρήστης κλικ σε έναν σύνδεσμο με το χαρακτηριστικό
target
να έχει οριστεί σε_blank
.Στην jQuery:
Κάθε φορά που γίνεται κλικ σε αυτόν τον σύνδεσμο, θα κατεβάζει το αρχείο σε νέα καρτέλα/παράθυρο.
ενημέρωση για τα σύγχρονα προγράμματα περιήγησης του 2019
Αυτή είναι η προσέγγιση που θα συνιστούσα τώρα με μερικές επιφυλάξεις:
Αν χρησιμοποιείτε ήδη την jQuery, μπορείτε να την εκμεταλλευτείτε για να δημιουργήσετε ένα μικρότερο απόσπασμα Μια jQuery έκδοση της απάντησης του Andrew's: