Προς το περιεχόμενο

<input type="file" accept=.. >


Bogey

Προτεινόμενες αναρτήσεις

Ερώτηση..

 

Πώς μπορώ να ορίσω ότι το file που θα κάνει ένας client θα έχει συγκεκριμένο μέγεθος, ότι θα μπορεί να ανεβάζει κάθε φορά ένα αρχείο, ότι θα μπορεί να ανεβάζει από αρχεία εικόνας μόνο jpeg;

Μπορώ να τα ορίσω όλα αυτά σε μια accept ή θα πρέπει να φτιάξω διαφορετικές;

 

Δηλαδή θα δουλέψει αυτό:

<input type="file" accept="application/msword" accept="image/jpeg"> ή πώς αλλιώς μπορώ να το γράψω..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

<input type="file" accept="application/msword" accept="image/jpeg">

Καλο μου αρεσε η σκεψη...accept="oti_8elw":-D

Mε PHP μπορεις να τα κανεις ολα αυτα που θελεις...

ψαξε εδω...http://www.hotscripts.com

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για να στέλνει ένα μονο αρχείο, απλά βάλε μονο ενα πεδίο τύπου file στη φόρμα.

και αν πετύχει ένα upload, μην του ξαναεμφανίσεις τη φόρμα. Ποτέ ή όχι πριον περάσει ενας Χ χρόνος. "λυπουμαστε αλλα εχετε ήδη ανεβάσει αρχείο. αύριο πάλι"

οτι κανει το rapidshare για downloads, κανε το για uploads.

 

-------------------------------------------------

 

για τύπους και μεγέθη:

 

ο κώδικας που τρέχει στον client, tον browser δηλαδή, ειναι HTML και Javascript (υπάρχει και vbscript, αλλα σε firefox ξεχασέ την).

 

αυτές οι "γλώσσες" δεν έχουν πρόσβαση στα αρχεία του σκληρού δίσκου του επισκέπτη. Αρχειο του hd, ειναι και το "file" που σου στέλνει η φορμα.

 

που σημαινει οτι, απαξ και του δινεις του χρηστη μια φορμα με πεδιο τυπου file, δεν υπάρχει τρόπος να τον αποτρέψεις να στείλει ότι θέλει.

να αρχίσει να στέλνει δηλαδή.

οτι αρχείο θέλει, με όποια κατάληξη, και οποιοδήποτε μέγεθος.

 

σημ. υπάρχει μια παράμετρος στις html formes τυπου:

<input type="hidden" name="MAX_FILE_SIZE" value="1000">

αλλα οι περισσότεροι browsers δεν δίνουν δεκάρα.

 

δηλ, αν περιμένεις αρχεία των 1-500 kb, και επιλέξει ο επισκέπτης να σου ανεβάσει ενα αρχειο 500 Gb, το upload θα ξεκινήσει.

και καποια στιγμή, απλά θα σκάσει. Timeout θα πάρει ο browser.

αλλα κατανοητό μηνυμα, για αρχάριους, δεν θα πάρει. ο ασχετος παντα θα πιστεύει οτι εσυ δεν εγραψες σωστά το πρόγραμμα.

 

 

 

Αυτό δεν σημαίνει οτι, επειδή το στέλνει, εσύ θα το δεχτείς. Αλλα το πρόβλημα υπάρχει. χρόνος χάθηκε, bytes πηγαινοέρχονται, και πρέπει να του ξαναεμφανίσεις τη φόρμα με ενα μηνυμα, οτι φιλε, μη στέλνεις αηδίες.. :)

 

το αρχείο σου το παιρνει πρώτα ο web server, apache συνήθως, και μετά το υποδέχεται το πρόγραμμα επεξεργασίας, σε server side γλώσσα (php, asp, κλπ..)

 

Σε επίπεδο apache, μπορείς να καθορίσεις στο httpd.conf μέγιστο επιτρεπτό μέγεθος αρχείων με το directive LimitRequestBody (νομιζω. δεν το εχω δοκιμάσει)

http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody

 

στην setup της php (php.ini) επίσης υπάρχει το

upload_max_filesize

http://gr.php.net/manual/el/ini.core.php#ini.upload-max-filesize

 

 

Aν δεν εχεις τον ελεγχο του σερβερ, ή δεν θελεις να ισχυουν αυτα τα ορια για όλα τα uploads, θα κάνεις τους ελέγχους, τυπου και μεγέθους στη συγκεκριμένη σελίδα php (ή asp, jsp, ότι έχεις) που δέχεται το αρχείο.

πχ σε php: http://gr.php.net/features.file-upload

 

 

 

 

 

 

 

 

 

---------------------------------------------------

 

αλλος τρόπος, να ελενξεις στον client πριν ξεκινήσει το transfer, ειναι με java applet, και signed μάλιστα. Αλλα μην την ψάχνεις εκει. ψιλά γράμματα και όχι για internet. Για intranet, το συζητάμε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πολύ ωραία random και σ ευχαριστώ..

 

Απ ότι είδα, στην ήδη υπάρχουσα φόρμα που υπάρχει στο site μας και κάνει το upload κι έπειτα καλεί για την αποστολή του αρχείου μια java σελίδα, γίνεται ο έλεγχος το τι αρχείο επιτρέπουμε να ανέβει.

Στην συγκεκριμένη περίπτωση είναι μόνο αρχεία doc.

Αν ο όμως χρήστης θελήσει να ανεβάσει ένα αρχείο εικόνας, απλά μπορεί να κάνει rename το extension jpg σε doc και το αρχείο ανεβαίνει μια χαρά και οι προστασίες πάνε περίπατο.

Το θέμα είναι πώς μπορώ να ελέγχω το αρχείο που ανεβαίνει με ασφαλέστερο τρόπο από αυτό του ελέγχου του extension ..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

οκ. το προβλημά σου τελικά ειναι μονο το εξτενσιον.

Αν δωσει πολυ μεγαλο αρχείο, ή αλλο εξτενσιον απο .doc το κόβετε.

 

πρωτα σκεψου, αν ειναι πραγματικά απαραίτητος τέτοιος έλεγχος.

δηλ. οκ του ζητας ενα doc, και ενας περίεργος μετονομαζει μια εικόνα ή ενα exe σε doc, και το στέλνει.

το αποθηκευεις κάπου. σε βάση ή σε filesystem.

ε, και τι έγινε?

απλά χάνεις μερικα bytes αποθηκευτικο χωρο, για ενα αχρηστο αρχείο.

 

Η επομενη κίνηση ποια είναι; καποια στιγμη κάποιος θα ζητησει να δει/κατεβάσει το αρχείο (πιθανοτατα ο ιδιος που το ανεβασε, για να θαυμασει το κατoρθωμα του; λεω εγω).

θα το κατεβασει, ο οποιος, θα του κανει διπλο κλικ, και το word θα του πετάξει μια ωραία μηνυματαρα, "this file is corrupted".

ειναι δική σου ευθυνη; εγω λεω όχι. ποιος το ανεβασε το αρχείο? ο τάδε user. απο ζητα τα ρέστα κυριε user2 (downloader).

 

Πες οτι εχεις μια εφαρμογή που οι χρηστες κανουν upload εργασίες ή βιογραφικά. και τα ζητάς σε ms word format .doc

Αν ο αλλος θέλει να κάνει βλακιες (οπως το rename), μπορει καλιστα να σου ανεβασει ενα αδειο doc, ή με άσχετα περιεχόμενα.

Θελεις να ελεγχεις κι αυτες τις περιπτώσεις;

 

 

 

 

 

---------------------------------------------

 

αν ακομα θελεις να προσπαθησεις..

 

ισως υπαρχει τροπος να ανοιξεις doc με java, και αν αποτυχεις να υποθεσουμε οτι εστειλε renamed ή corrupted

 

 

ή -αν ο web server σου ειναι windows-, να κανει αυτη τη δουλεια ενα vb προγραμματάκι

 

-------------------------------------------------------

ή μπορεις να τσεκάρεις με τη java τα πρώτα bytes του αρχειου, και να ελεγχεις αν εχουν την ιδια αρχή με μερικα δειγματα word.

ανοιξε ενα doc, με το ultraedit, γυρνα το view σε hexeditor, με ctrl+H, και δες τα πρωτα bytes

5-6 doc που ανοιξα εγώ, ολα αρχίζουν με:

 

D0-CF-11-E0-A1-B1-1A-E1...........

 

αλλα για να εισαι σιγουρος, πρεπει να ανοιξεις μερικα doc απο διαφορες εκδοσεις office (1997, 2000, XP, 2003) μηπως εχουν διαφορές.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υπάρχουν utilities που σου λένε τι τύπος αρχείου είναι χωρίς να κοιτάνε το extension.

Windows server: PEiD.exe (το καλείς με command line μέσω php)

Linux server: εντολή file (επίσης το καλείς μέσω php).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλημέρα,

 

random, θα προσπαθήσω σίγουρα!

Όσον αφορά τον έλεγχο των αρχείων που γίνονται upload, είναι οδηγία-υποχρέωση που ήρθε από το Audit που αφορά το Internet website security, της μαμάς εταιρείας.. και πρέπει να γίνει..

 

alkisg, σ ευχαριστώ, αλλά στο site δεν παίζει η php.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...