Το καλυτερο File Upload

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
thelolgameplays7312
Δημοσιεύσεις: 4
Εγγραφή: 31 Μάιος 2012 19:56
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από thelolgameplays7312 » 31 Μάιος 2012 20:15

Ενα απλο και ευκολο script
Το παρακάτω script είναι διαθέσιμο για
Web Server(σαν 000webhost κτλ)
Ανεβάζει ότι αρχεια επιλέξει ο χρήστης πχ στο script έχω βάλει ενα αρχειο torrent το οποίο μπορείτε να αλάξετε


Μπορείτε να το κατεβάσετε ή να το δείτε από εδώ:


/*
PHP Upload system by TheLoLGameplays7312
1.Create a folder to your local server for example xampp,wamp
2.Create a folder and put this file , upload.php inside
3.Create a another folder and call it uploads![<- important]
4.Call this file 'upload.php'
5.Type exactly the script!


------------------
Youtube: http://www.youtube.com/user/thelolgameplays7312
Twitter: http://twitter.com/#!/thelolgameplays

Have you got any problems? Send a email here: thelolgameplays7312@gmail.com

------------------
Note: you can delete this message[up]


*/


Κώδικας: Επιλογή όλων

<?php

if &#40;isset&#40;$_FILES&#91;'image'&#93;&#41;&#41;&#123;
	$errors = array&#40;&#41;;
	$allowed_ext = array&#40;'torrent'&#41;; // here type your file you want!I put &#40;.torrent&#41; file
	// you can put whatever you want!

	
	$file_name = $_FILES&#91;'image'&#93;&#91;'name'&#93;;
	$file_ext = strtolower&#40;pathinfo&#40;$file_name, PATHINFO_EXTENSION&#41;&#41;;
	$file_size = $_FILES&#91;'image'&#93;&#91;'size'&#93;;
	$file_tmp = $_FILES&#91;'image'&#93;&#91;'tmp_name'&#93;;
	
	if&#40;in_array&#40;$file_ext, $allowed_ext&#41; === false&#41;&#123;
		$errors&#91;&#93; = 'Extension not allowed!'; 
		// just a simple message!
		
	&#125;
	// for file size
	if&#40;$file_size > 2097152&#41;&#123;
		$errors&#91;&#93; = 'File must be under 2mb!';
	&#125;
	if &#40;empty&#40;$errors&#41;&#41;&#123;
	move_uploaded_file&#40;$file_tmp, 'uploads/'.$file_name&#41;; // your upload directory&#91;folder&#93;
	echo '<b>File uploaded</b>';
	&#125; else &#123;
		foreach&#40;$errors as $error&#41;&#123;
			echo $error, '<br />';
		&#125;
	&#125;
&#125;
// close php here and now lets create our form!
?>

<form action="" method="POST" enctype="multipart/form-data">
	<p>
		<input type="file" name="image"/>
		<input type="submit" value="Upload File">
	</p>
</form>



Αυτο είναι :D
Συνημμένα
upload.rar
Σε λιγο θα ανεβασω το βιντεο στο youtube
(673 Ψηφιολέξεις) Μεταφορτώθηκε 358 φορές
Λατρεύω PHP!

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από alou » 01 Ιουν 2012 00:04

LOL όντως

Κρίμα κάποιος στό έκλεψε
http://www.youtube.com/watch?v=jjkCIZef ... ure=relmfu

thelolgameplays7312
Δημοσιεύσεις: 4
Εγγραφή: 31 Μάιος 2012 19:56
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από thelolgameplays7312 » 01 Ιουν 2012 00:23

alou έγραψε:LOL όντως

Κρίμα κάποιος στό έκλεψε
http://www.youtube.com/watch?v=jjkCIZef ... ure=relmfu

Oχι δεν το ειδα απο τον phpacademy :P
Aλλα εχει αψογα tutorials!
Λατρεύω PHP!

mariosal
Honorary Member
Δημοσιεύσεις: 1473
Εγγραφή: 09 Νοέμ 2007 23:55

Το καλυτερο File Upload

Δημοσίευση από mariosal » 01 Ιουν 2012 00:35

The best of the best όμως παιδάκι μου. :hammer: :hammer: :hammer:

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από Intefix » 30 Νοέμ 2013 16:22

Για να μην ανοίγω άλλο θέμα...
Οκ ανεβάζει το αρχείο που θέλουμε στο server.
Ερώτημα πως θα αποθηκεύσουμε το path του αρχείου στη MySQL μας;
Τι γίνεται αν ηδη υπάρχει αρχείο με ιδιο όνομα;
Πως μπορούμε να ανεβάσουμε περισσότερα αρχεία και να καταγραφουν οι διαδρομές;

Αν μπορεί κανεις να βοηθήσει παρακαλώ...
Ευχαριστώ

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από geomagas » 30 Νοέμ 2013 19:50

Intefix έγραψε:πως θα αποθηκεύσουμε το path του αρχείου στη MySQL μας;
Εξαρτάται. Ποιος είναι ο πίνακας σου; Ή μήπως το ερώτημα είναι "τι μορφή θα έχει ο πίνακας";
Intefix έγραψε:Τι γίνεται αν ηδη υπάρχει αρχείο με ιδιο όνομα;
Δεν είναι απαραίτητο να αποθηκεύεις τα αρχεία στο δίσκο του server με το original filename.
Του δίνεις ένα unique filename τοπικά, και στον πίνακα υπάρχει η αντιστοιχία του τοπικού με το original.
Intefix έγραψε:Πως μπορούμε να ανεβάσουμε περισσότερα αρχεία και να καταγραφουν οι διαδρομές;
Δεν το κατάλαβα αυτό. Εννοείς πολλά αρχεία στο ίδιο request;

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από Intefix » 02 Δεκ 2013 14:28

geomagas έγραψε:
Intefix έγραψε:πως θα αποθηκεύσουμε το path του αρχείου στη MySQL μας;
Εξαρτάται. Ποιος είναι ο πίνακας σου; Ή μήπως το ερώτημα είναι "τι μορφή θα έχει ο πίνακας";
Intefix έγραψε:Τι γίνεται αν ηδη υπάρχει αρχείο με ιδιο όνομα;
Δεν είναι απαραίτητο να αποθηκεύεις τα αρχεία στο δίσκο του server με το original filename.
Του δίνεις ένα unique filename τοπικά, και στον πίνακα υπάρχει η αντιστοιχία του τοπικού με το original.
Intefix έγραψε:Πως μπορούμε να ανεβάσουμε περισσότερα αρχεία και να καταγραφουν οι διαδρομές;
Δεν το κατάλαβα αυτό. Εννοείς πολλά αρχεία στο ίδιο request;
Το πρώτο φτιάχτηκε...- Πίνακας μορφή; Ένας πίνακας στη MySQL που έχει και ένα πεδίο για το path- anw οκ φτιάχτηκε.
Οκ πως δίνω μοναδικό όνομα αλλα κάτι που αν το βλέπει καποιος να καταλαβαίνει περι τινος πρόκειται. Πχ να τα κανει greeklish και να απροσθέτει(1)(2) αν υπάρχει ίδιο...
Έστω ότι καταφέρνω και ανεβάζω περισσότερα από 1 αρχεία για κάθε εγγραφή...
Ποιος χαρακτήρας είναι καταλληλότερος για διαχωρισμό των ονομάτων των αρχείων;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από geomagas » 02 Δεκ 2013 15:38

Intefix έγραψε:Οκ πως δίνω μοναδικό όνομα
Με την uniqid().
Intefix έγραψε:αλλα κάτι που αν το βλέπει καποιος να καταλαβαίνει περι τινος πρόκειται. Πχ να τα κανει greeklish και να απροσθέτει(1)(2) αν υπάρχει ίδιο...
Δεν θα το βλέπει. Γιατί να το βλέπει; Ο χρήστης θα βλέπει το original filename με το οποίο θα αντιστοιχεί το unique (βλ. παραπάνω).
Intefix έγραψε:Έστω ότι καταφέρνω και ανεβάζω περισσότερα από 1 αρχεία για κάθε εγγραφή...
Τι εννοείς "για κάθε εγγραφή"; Κάθε αρχείο δεν θα πιάνει μία εγγραφή στον πίνακά σου;
Intefix έγραψε:Ποιος χαρακτήρας είναι καταλληλότερος για διαχωρισμό των ονομάτων των αρχείων;
Γιατί να διαχωρίσεις τα ονόματα των αρχείων;;; :think:

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από Intefix » 13 Δεκ 2013 09:32

Αρχικά σε ευχαριστώ για τις απαντήσεις σου.
Αν μπορείς να με βοηθήσεις θα ήμουν υποχρεωμένος.
Αφού έχω δοκιμάσει πολλές εναλλακτικές έχω καταλήξει στο παρακάτω:Εικόνα
Περιγραφή: Αυτό που δείχνω είναι τμήμα μιας φόρμας που εκτός των άλλων στέλνει και αρχεία στο server.
Στη δική μου περίπτωση έχω 2 πίνακες ας πούμε events και events_files, σε one to many σχέση.
Κάνω μια εγγραφή στον events.
Παίρνω το ID της εγγραφής , filename, title, λεζάντα, κλπ και τα καταχωρώ στον δεύτερο...

Στο σχεδιασμό της φόρμας έχω ένα κουμπί + για προσθήκη νέας σειράς. Και ένα checkbox αν θέλω να εμφανίζεται το αρχείο η όχι. Με το - διαγράφω τη σειρά.
Πως μπορώ να υλοποιήσω κάτι τέτοιο;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από geomagas » 13 Δεκ 2013 12:19

Αυτό που ρωτάς είναι πολύ γενικό.
Μπορείς να το κάνεις με ajax ή χωρίς.
Σε κάθε περίπτωση, η φόρμα σου θα πρέπει να περιλαμβάνει και ένα (hidden?) input με το events.ID, που θα περιλαμβάνεται στο post που θα κάνεις.

Αν χρησμοποιήσεις ajax, ανεβάζεις ένα αρχείο κάθε φορά, οπότε δημιουργείς (ή διαγράφεις, ή ενημερώνεις) μία μόνο εγγραφή στον event_files.

Σε αντίθετη περίπτωση, θα πρέπει να υλοποιήσεις τα πεδία σου σαν arrays και για κάθε στοιχείο να αποφασίζει το script σου αν η ενέργεια είναι εισαγωγή, διαγραφή ή ενημέρωση και να πράττει αναλόγως.

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από Intefix » 13 Δεκ 2013 13:58

geomagas έγραψε:...Σε αντίθετη περίπτωση, θα πρέπει να υλοποιήσεις τα πεδία σου σαν arrays και για κάθε στοιχείο να αποφασίζει το script σου αν η ενέργεια είναι εισαγωγή, διαγραφή ή ενημέρωση και να πράττει αναλόγως.
Προφανώς σαν array θα σταλθούν...εξάλλου και ($_FILES) είναι array...το ερώτημα είναι η δημιουργία των γραμμών (arrays) στη μεριά client πριν κάνω submit...των επαναλαμβανόμενων inputs, files κλπ "+" new-array "-" delete-aray...
Στο submit κάνω insert στον 1ο πίνακα ρωτάω το ID παίρνω και τα των arrays και τα βάζω στον 2ο πίνακα...

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από geomagas » 13 Δεκ 2013 20:59

Intefix έγραψε: Προφανώς σαν array θα σταλθούν...
Γιατί "προφανώς"; Μόνο ένας τρόπος υπάρχει;
Intefix έγραψε:εξάλλου και ($_FILES) είναι array...
... για τους ίδιους λόγους που και το $_POST είναι array. Associative.
Αλλά άλλο να λες $_POST['foo'] και $_POST['bar'], και άλλο $_POST['foo'][0] και $_POST['foo'][1].
Intefix έγραψε:το ερώτημα είναι η δημιουργία των γραμμών (arrays) στη μεριά client πριν κάνω submit...των επαναλαμβανόμενων inputs, files κλπ "+" new-array "-" delete-aray...
Δηλαδή θέλεις κάτι σαν (σε jQuery):

Κώδικας: Επιλογή όλων

$&#40;'#plus'&#41;.onclick&#40;function&#40;&#41;&#123;
  $&#40;'#mytable'&#41;.append&#40;'<tr>&#123;fields_in_td&#125;</tr>'&#41;;
  &#125;&#41;;
Intefix έγραψε:Στο submit κάνω insert στον 1ο πίνακα ρωτάω το ID παίρνω και τα των arrays και τα βάζω στον 2ο πίνακα...
...Και πολύ καλά κάνεις! (μάλλον...)

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από alou » 13 Δεκ 2013 21:04

geomagas έγραψε: Δηλαδή θέλεις κάτι σαν (σε jQuery):

Κώδικας: Επιλογή όλων

$&#40;'#plus'&#41;.onclick&#40;function&#40;&#41;&#123;
  $&#40;'#mytable'&#41;.append&#40;'<tr>&#123;fields_in_td&#125;</tr>'&#41;;
  &#125;&#41;;

ή $('#plus').on('click', function(){
ή $('#plus').click(function(){

ο συνδυασμός δεν παίζει :D καλύτερα πάντα το .on('event', something γιατί έρχεται να αντικαταστήσει και τα live, delegate.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Το καλυτερο File Upload

Δημοσίευση από geomagas » 13 Δεκ 2013 21:25

Σωστά. Κεκτημένη ταχύτητα!
Thanx!

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Το καλυτερο File Upload

Δημοσίευση από jpk » 14 Δεκ 2013 13:18

Ρίξτε μια ματιά στο Event performance στο on του jQuery. Φάτε λίγο χρόνο να σκεφτείτε το πώς πραγματικά λειτουργεί και βρείτε καλύτερες εναλλακτικές ανά περίπτωση. Μακάρι να υπήρχε κάποια on που θα έλυνε όλα τα προβλήματα χωρίς μεγάλο κόστος.

http://api.jquery.com/on/

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 4 επισκέπτες