File API, μια λύση σε ένα όχι και τόσο απλό πρόβλημα
Στέλιος Πετράκης, στις 13 January 2010 · Web standards · Προγραμματισμός ·

File uploaders. Εργαλεία που έχουν γίνει αναπόσπαστο κομμάτι κάθε web service στην εποχή μας, αλλά και ένας μόνιμος πονοκέφαλος για τους developers.
Όσο απλή και να φαίνεται η διαδικασία μαζικού upload 20 φωτογραφιών στο Flickr, τα πράγματα στον κώδικα δεν είναι πάντα τόσο εύκολα. Έτσι λοιπόν στις μέρες μας για να μπορέσει κάποιος να υλοποιήσει μια σωστή διαδικασία μαζικού upload, θα πρέπει να χρησιμοποιήσει την τεχνολογία Flash της Adobe, λόγω έλλειψης της δυνατότητας μαζικής και ασύγχρονης αποστολής αρχείων στον server από τους browsers που κυκλοφορούν.
Χωρίς να θέλω να σας ζαλίσω με λεπτομέρειες γύρω από την παρούσα αρχιτεκτονική (υπάρχουν άλλωστε έτοιμα πακέτα/plugins για jQuery που βοηθούν σε αυτή την κατεύθυνση), ήταν λογικό να δημιουργηθεί η ανάγκη ανάπτυξης ενός προτύπου για ακριβώς αυτήν την δουλεία. To File API που προτάθηκε από την W3C και έχει ήδη αρχίσει να υλοποιείται σε browsers (Firefox 3.6 RC1) είναι το βήμα προς την σωστή κατεύθυνση.
Το File API δίνει την δυνατότητα στους developers να έχουν πρόσβαση στα δεδομένα των αρχείων μιας φόρμας μέσα από την Javascript, ώστε να παρουσιάζουν τόσο τα ίδια και τα metadata τους άμεσα, αλλά και να τα ανεβάζουν ασύγχρονα σε servers χωρίς χρήση Flash.
Χρησιμοποιώντας την δυνατότητα της HTML 5 να υποστηρίζει το attribute “multiple” στα input tags, το File API μπορεί εύκολα να αντικαταστήσει τους file uploaders μέσα σε λίγες γραμμές Javascript, δίνοντας δυνατότητα και για μαζικό upload. Οι χρήστες θα μπορούν να βλέπουν thumbnails των εικόνων τους πριν τις ανεβάσουν στην υπηρεσία, να παρακολουθούν την πορεία του uploading και να ενημερώνονται για μετα-πληροφορίες που αυτές φέρουν (EXIF data), όπως για παράδειγμα GPS συντεταγμένες.
Χαρακτηριστικό είναι το παρακάτω video της ομάδας από την Mozilla που δείχνει τις δυνατότητες του File API σε ένα μικρό demo.
Να σημειώσουμε πως τα χαρακτηριστικά του File API, όπως και όλες οι τεχνολογίες που εισάγονται τελευταία στον χώρο, έχουν την δυνατότητα να συνδυαστούν με άλλα APIs και standards, όπως για παράδειγμα το Drag’n Drop API της HTML 5 (που δεν έχει τύχει και της καλύτερης υποδοχής από πολλούς).
Στον τομέα του File API πάντως, η ομάδα του WebKit (Safari, Chrome) δεν έχει ακόμα δείγματα γραφής αν και το Chrome αναμένεται να υποστηρίξει το πρότυπο μέσα στο 2010. Από την άλλη, η επόμενη έκδοση του Firefox (3.6) θα το υποστηρίζει πλήρως.
Παρακάτω ακολουθεί ένα μικρό demo του File API για όσους βιάζονται και έχουν ήδη εγκαταστήσει την release candidate του Firefox 3.6.
Αντί επιλόγου
Είναι φυσικό κάποιος παρόλα αυτά να αναλογιστεί προς τι ο πανικός για ένα πρόβλημα που έχει λυθεί ήδη χρησιμοποιώντας Flash. Πρέπει να σκεφτούμε πως η ανάπτυξη του File API γίνεται καθαρά για την ύπαρξη ενός προτύπου που θα βοηθήσει τους developers και θα είναι ανεξάρτητο από μια τρίτη εταιρία. Επίσης με τον συγκεκριμένο τρόπο οι χρήστες που δεν θα μπορούν να εγκαταστήσουν το Flash plugin (βλ. iPhone users) θα έχουν την ίδια ακριβώς εμπειρία, και τέλος οι λειτουργίες αυτές θα υποστηρίζονται natively από τους browsers βελτιώνοντας τον χρόνο απόκρισης και την ταχύτητα της όλης διεργασίας.
Πηγές
- Χρήσιμο tutorial για το File API από την Mozilla team
- Περισσότερες πληροφορίες για το File API
- Η επίσημη σελίδα του API από την W3C
Στέλιος Πετράκης
Ο Στέλιος Πετράκης (stelabouras) δηλώνει φανατικός gamer και web addict. Εργάζεται ως web developer στην Phaistos Networks, ολοκληρώνει το μεταπτυχιακό του, γράφει posts στο Wiggler.gr, αναπτύσσει και συντηρεί το Slideflickr.com και στον ελεύθερό του χρόνο πειραματίζεται με οτιδήποτε έχει σχέση με web, programming, design και games.
{5 σχόλια ως τώρα } + Νέο σχόλιο
PanosJee
Υπάρχει και η λύση με Java Applet
Μπλιάχ ε;
Στέλιος Πετράκης
Κάπως έτσι
Τα Java Applets, αν και χρησιμοποιούνται από κάποιες υπηρεσίες (βλ. Facebook), είναι ότι πιο βαρύ μπορεί να συναντήσει ένας χρήστης imo.
Γιάννης Τσεβδός
Πολύ καλό άρθρο ρε φίλε. Πως μου είχε ξεφύγει το File API; Το μόνο κακό που μπορώ να διακρίνω στην HTML5, είναι πως πλέον για να γράψεις σωστή markup/CSS/JS θα χρειάζεσαι 10 διαφορετικά άτομα!
Μπούκλας Μιχάλης
Προσωπικά λατρεύω τα API’s αλλά στην προκειμένη τρέμω. Ο ie6 είναι ακόμη εκεί έξω και θα είναι για κάποιο καιρό ακόμη και συν της άλλης θα πρέπει να γράφουμε πάλι κώδικα από την αρχή...
Τα Java Applets μας βγάλανε ασπροπρόσωπους για αρκετά χρόνια όσο δεν υπήρχαν οι λύσεις με Flash, και μη ξεχνάμε ότι μπορούν να κάνουν μπόλικα πράγματα client side για να μειώνετε το bandwidth και το CPU usage στο server που σε high traffic site είναι χρυσάφι.
stagas
Υπάρχει βέβαια και αυτό: http://www.plupload.com/