mixalis8 Δημοσ. 14 Μαΐου 2007 Δημοσ. 14 Μαΐου 2007 Λοιπόν παιδιά χρειάζομαι άμεση βοήθεια... Τόσο καιρό αποθηκεύω στην βάση δεδομένων μου αρχεία. (blob) τώρα όμως αποφάσισα να τα έχω κανονικά αρχεία σε κάποιο φάκελο. Θέλω όμως ότι αρχεία έχω τώρα σε blob να τα κάνω αυτόματα files σε φακελό. Μπορεί να με βοηθήσει κάποιος??? thanks
random Δημοσ. 14 Μαΐου 2007 Δημοσ. 14 Μαΐου 2007 θα γράψεις ενα πρόγραμμα που θα διαβάζει τα blobs και θα τα γράφει ως αρχεία στο filesystem. Σε τι θα το γράψεις; ειτε σε μια απο τις γνωστές γλώσσες προγραμματισμού, είτε στη γλώσσα που υποστηρίζει εσωτερικά η βάση σου. αυτά. χωρις να διευκρινήσεις ποιά βάση χρησιμοποιείς, δεν μπορούμε να επεκταθούμε.
kazanas Δημοσ. 15 Μαΐου 2007 Δημοσ. 15 Μαΐου 2007 Auto prwti fora to akouw.. diskoli periptwsi ontws pes mas ti basi xrisimopoieis..kai ti arxeia einai auta sini8ws
mixalis8 Δημοσ. 15 Μαΐου 2007 Μέλος Δημοσ. 15 Μαΐου 2007 einai zip arxeia kai thelo na to kano me php kai mysql
kazanas Δημοσ. 15 Μαΐου 2007 Δημοσ. 15 Μαΐου 2007 zip arxeia kai ta ekanes blob? itan la8os ontws Katarxin prin ta apo8ikeuseis stin basi den ta kratages ena back-up san zip? Mallon oxi gia na mas les oti 8eleis na ta metatrepseis e? Einai polla? Mporeis na ta katebaseis an den ta exeis ston skliro sou kai apo ekei peta ta se enan katalogo, kai me phpMyAdmin bale ena neo pedio me tin address twn zip kai se ena ena arxeio manually bale thn dieu8insi pou einai Auto an exeis liga ews arketa arxeia..simferei apo to na psaxneis i xeirotera na kaneis ena tetoio programma Ean einai para polla..mallon 8es ena script Auta pou sou lew isws kai ta xereis idi alla ta egrapsa mpas kai oxi Gia to script omologw oti den to exw xanadei kai den mporw na boi8isw ousiastika.. http://php.benscom.com/manual/el/ref.zip.php
alkisg Δημοσ. 15 Μαΐου 2007 Δημοσ. 15 Μαΐου 2007 Καταρχάς βρίσκεις με ποιον τρόπο θα κωδικοποιείς τα filenames. Π.χ. δυο χρήστες μπορεί να σου στείλουν το αρχείο τεστ.txt. Εσύ θα πρέπει να τα αλλάξεις ώστε να χρησιμοποιούν διαφορετικό όνομα, π.χ. τεστ_12.txt και test_13.txt όπου το 12 και 13 είναι το id (autoincrement) του αρχείου στη βάση. Επίσης μπορεί να θελήσεις να εξαφανίσεις τις επεκτάσεις για λόγους ασφαλείας, ώστε να μην μπορεί π.χ. κάποιος να ανεβάσει ένα .php αρχείο και μετά να το εκτελέσει. Έτσι μπορεί να τα ονομάσεις τεστ_12_php.file και τεστ_13_php.file. Στη συνέχεια καλό θα είναι να κάνεις μια συνάρτηση μετατροπής των unicode χαρακτήρων σε ascii, επειδή μερικοί servers μπορεί να μην υποστηρίζουν ελληνικά στο file system. Έτσι μπορεί να τα ονομάσεις test_12_php.file και test_13_php.file Εν τέλει, όταν κάποιος θέλει να λάβει ένα αρχείο, θα χρησιμοποιείς την ίδια συνάρτηση μετατροπής του ονόματος για να βρεις το πραγματικό όνομα του αρχείου στον δίσκο (εσύ στη βάση θα κρατάς το πρωτότυπο - unicode). Και θα πρέπει να του φτιάχνεις τα headers ώστε να στέλνεται σαν attachment και πιθανώς αν θες να υποστηρίζεις και resuming. Όλα αυτά τα ωραία μπορείς να τα βρεις έτοιμα αν κοιτάξεις π.χ. τον κώδικα κάποιου forum. Π.χ. στο smf βρίσκονται στο αρχείο attachments.php. Αφού τα κάνεις αυτά, τότε θα είναι η ώρα να φτιάξεις το script που θες, το οποίο τότε θα είναι ιδιαίτερα απλό, αφού θα έχεις έτοιμη τη συνάρτηση ονομάτων κτλ. Απλά ένα select από τη βάση και ένα write στο δίσκο με το κατάλληλο όνομα.
mixalis8 Δημοσ. 16 Μαΐου 2007 Μέλος Δημοσ. 16 Μαΐου 2007 Loipon... exoume kai leme... exv enan pinaka pou periexei to blob file, to megethos tou arxeiou, tin kataliksi, kai to onoma tou arxeiou... otan thelo na kano download ena arxeio apo tin basi dedomenon tote ektelo (meros tou kodika) ton parakato kodika... $query = "SELECT FileName, FileType, FileSize, File, Downloads FROM Subtitles WHERE idIpotitlou = '$id'"; $result = mysql_query($query) or die('Error, query failed'); list($name, $type, $size, $content, $downloads) = mysql_fetch_array($result); header("Content-Disposition: attachment; filename=$name"); header("Content-length: $size"); header("Content-type: $type"); echo $content afto to kalo meso enos link... kai mou bgazi apeuthias download to arxeio... mipos mporo na kano kati me ta headers????
Dikemou Δημοσ. 16 Μαΐου 2007 Δημοσ. 16 Μαΐου 2007 > $q = $db->query("SELECT * FROM Subtitles"); while ($r = $q->fetch_assoc()){ $f = fopen("/some/path/".$r['idIpotitlou']."_".$r['FileName'].$r['FileType'], 'w'); fwrite($f, $r['File']); }
mixalis8 Δημοσ. 16 Μαΐου 2007 Μέλος Δημοσ. 16 Μαΐου 2007 loipon.. ekanan afto pou mou eipes... egine kati alla dimiourgithike ena aprosdokito problima... eno mexri tora otan ekana download to arxeio edine to fisiologiko onoma sto arxeio tora dinei kati paraksena "n5fdh548gd6" kati tetoia tixaia.... stin arxi skeftika oti allaksa kati ston kodika kai ton ksana ekana etsi opos itan.... pali to idio.... kai tora oti arxeio pao na katebaso apo firefox... apo opoudipote mou kanei to idio... ti egine??????
Dikemou Δημοσ. 16 Μαΐου 2007 Δημοσ. 16 Μαΐου 2007 Ο κώδικας γράφει τα blobs σε αρχεία στο fs σου, που είναι αυτό που ζήτησες στο πρώτο ποστ σου. Τον τρέχεια μία φορά για να κάνεις τη μετατροπή για όλα τα blobs σου. Το πως θα σερβίρεις μετά τα αρχεία είναι άλλο θέμα. Αν η στήλη "FileName" περιέχει όντως το όνομα του αρχείου και η "FileType" το extension του, τότε θα πρέπει να δημιουργούνται σωστά filenames και στο δίσκο στο path που δίνεις (πρόσθεσα και το id_ σε κάθε αρχείο για να σιγουρέψω οτι δε θα γίνει κάνα overwrite).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.