How to unzip or uncompress a file .epub on drupal?

by Mitch   Last Updated August 23, 2015 17:03 PM - source

I've created a content type that upload files .epub on database. Now for some reason (to use epub on a mobile app) i need to get the file .epub uncompressed.

It's like in my content type I upload a .zip file but when drupal store it it's stored unzipped.

Did someone knows a drupal function or a method that uncompress or unzip a .epub files please ?

Note that when i upload an .epub file or .jpg image or any other type of extensions, in the table file_managed i always get filemime : "application/octet-stream"? is it normal ?

Thank you



Answers 1


PHP already has a built in class to process zip files. You can combine that with a hook_node_presave invocation in a custom module to process the field containing your ePub file and extract it to a directory in your file system.

/**
 * Implements hook_node_presave().
 */
function MYMODULE_node_presave($node) {
  if(isset($node->field_MYFIELD[LANGUAGE_NONE][0]['fid'])) {
    $file = file_load($node->field_sss[LANGUAGE_NONE][0]['fid']);
    $file_path = drupal_realpath($file->uri);
    $file_name = pathinfo($file_path, PATHINFO_FILENAME);
    $zip = new ZipArchive;
    if ($zip->open($file_path)) {
      $zip->extractTo(drupal_realpath("public://MYMODULE_customdir/$file_name"));
      $zip->close();
    }
  }
}
Shawn Conn
Shawn Conn
August 23, 2015 18:16 PM

Related Questions




Problem setting a private directory

Updated March 14, 2017 14:07 PM

Failed to migrate files

Updated January 27, 2018 18:07 PM

How to change file system in drupal 8

Updated October 11, 2016 09:03 AM