system_error86 Posted April 1, 2016 Share Posted April 1, 2016 (edited) Γεια σας, θα ήθελα τη βοήθεια σας παρακαλώ. Έχω ένα module το οποίο κάνει import προϊόντα που είναι μέσα σε csv. Το πρόβλημα μου είναι ότι το αρχείο csv είναι μεγάλο οπότε χρειάζεται πολύ χρόνο να ανέβει στο σέρβερ από μια κοινή γραμμή ίντερνετ. Οπότε πρέπει να είναι συμπιεσμένο. Το θέμα είναι ότι όταν ανέβει στο σέρβερ συμπιεσμένο το module πρέπει να το αποσυμπιέσει. Δοκίμασα να γράψω τις παρακάτω γραμμές που χρησιμοποιώ είτε τον ένα είτε τον άλλο αλλά τίποτα /* $zip = new ZipArchive; $res = $zip->open($zip_file); if ($res === TRUE) { $zip->close(); echo 'woot!'; } else { echo 'doh!'; }*/ $zip_file = _PS_ROOT_DIR_ . "import_csv/prototype_csv.zip"; //$extract_dir = dirname(dirname(__FILE__)) . '/theCSV/'; //$file = dirname(dirname(__FILE__)) . '/theCSV/Eshop.csv'; //$file = $_FILES['filecsv']; if ($zip_file['error'] == 0) { //move_uploaded_file($csv['tmp_name'], dirname(__FILE__) . "/images/" . $img['name']); $zip = new ZipArchive; //$a = _PS_ROOT_DIR_ . "/import_csv/" . $zip_file; $res = $zip->open($zip_file); if ($res === true) { $zip->extractTo(_PS_ROOT_DIR_ . '/the_csv'); $zip->close(); echo 'woot!'; } else { echo 'doh!'; } } Ευχαριστσώ Edited April 3, 2016 by system_error86 (see edit history) Link to comment Share on other sites More sharing options...
TasosB Posted April 2, 2016 Share Posted April 2, 2016 (edited) Καλησπέρα Έτσι δουλεύει άψογα για τις ανάγκες μου και προσάρμοσε τα paths σου Εδώ υποθέτουμε ότι παίρνει και αποσυμπιέζει στον ίδιο φάκελο // το path του συμπιεσμένου αρχείου. Στο παράδειγμα είναι στον ίδιο φάκελο $file = 'nameofzippedfile.zip'; // παίρνει το absolute path του $file $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { //εξάγει στο ανωτέρω $path $zip->extractTo($path); $zip->close(); } Αν οδηγηθείς στη λύση με οποιαδήποτε απάντηση σημείωσε το θέμα ως solved.. Θα βοηθήσει πιστεύω αρκετούς στη διαχείριση λιστών από προμηθευτές είτε σε .csv ή σε .xml Καλή συνέχεια. Edited April 2, 2016 by TasosB (see edit history) Link to comment Share on other sites More sharing options...
system_error86 Posted April 3, 2016 Author Share Posted April 3, 2016 (edited) Σε ευχαριστώ πάρα πολύ για τη βοήθειά σου!! Δουλεύει αυτό που μου λες αλλά το κάνει extract μέσα στο φάκελο του module! Εγώ θα ήθελα να εισάγω το zip αρχείο σε ένα φάκελο στο root του presta και να το κάνω extract σε ένα άλλο φάκελο πάλι μέσα στο root του presta. προσπάθησα να βάλω στο $file = _PS_ROOT_DIR_ . "import_csv/prototype_csv.zip"; και να το κάνει extract στο import_csv που είναι φάκελος μέσα στο root αλλά τίποτα Σε ευχαριστώ πολύ Τελικά έκανα λάθος το path!!! Γεια να συνοψίσουμε. Εάν θέλετε το import να κάνει αυτές τις διαδικασίες στον ίδιο φάκελο ο κώδικας είναι // το path του συμπιεσμένου αρχείου. Στο παράδειγμα είναι στον ίδιο φάκελο $file = 'nameofzippedfile.zip'; // παίρνει το absolute path του $file $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { //εξάγει στο ανωτέρω $path $zip->extractTo($path); $zip->close(); } Εάν θέλετε το import να κάνει αυτές τις διαδικασίες σε άλλο φάκελο εκτός του module ο κώδικας είναι $file = _PS_ROOT_DIR_ . '/ο φάκελος που υπάρχει το zip/όνομα_αρχείου.zip'; $path = _PS_ROOT_DIR_ . '/ο διαφορετικός φάκελος που εξάγεται το csv από το zip/'; $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { //εξάγει στο ανωτέρω $path $zip->extractTo($path); $zip->close(); } Edited April 3, 2016 by system_error86 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now