Jump to content

Αποσυμπίεση αρχείου μέσα σε φάκελο του prestashop (λύθηκε)


Recommended Posts

Γεια σας,

θα ήθελα τη βοήθεια σας παρακαλώ. Έχω ένα 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 by system_error86 (see edit history)
Link to comment
Share on other sites

Καλησπέρα

Έτσι δουλεύει άψογα για τις ανάγκες μου και προσάρμοσε τα 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 by TasosB (see edit history)
Link to comment
Share on other sites

Σε ευχαριστώ πάρα πολύ για τη βοήθειά σου!! Δουλεύει αυτό που μου λες αλλά το κάνει extract μέσα στο φάκελο του module! Εγώ θα ήθελα να εισάγω το zip αρχείο σε ένα φάκελο στο root του presta και να το κάνω extract σε ένα άλλο φάκελο πάλι μέσα στο root του presta.

 

προσπάθησα να βάλω στο $file =  _PS_ROOT_DIR_ . "import_csv/prototype_csv.zip";  και να το κάνει extract στο import_csv που είναι φάκελος μέσα στο root αλλά τίποτα 

 

Σε ευχαριστώ πολύ

 

 

Τελικά έκανα λάθος το path!!!  :angry:

 

 

Γεια να συνοψίσουμε. Εάν θέλετε το 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 by system_error86 (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...