Coder Social home page Coder Social logo

Comments (7)

jszobody avatar jszobody commented on July 21, 2024 1

Ok the issue was the saveTo, I had been focusing on the source files.

It's fixed, with a test case specifically setup for your scenario:

public function testSaveZipOutput()
{
file_put_contents("/tmp/test1.txt", "this is the first test file for test run: " . microtime());
file_put_contents("/tmp/test2.txt", "this is the second test file for test run:" . microtime());
/** @var ZipStream $zip */
$zip = Zip::create("my.zip", ["/tmp/test1.txt", "/tmp/test2.txt"]);
$zip->saveTo("/tmp");
$this->assertTrue(file_exists("/tmp/my.zip"));
$this->assertEquals($zip->predictedZipSize(), filesize("/tmp/my.zip"));
}
'

Version 1.7 is released with this fix.

from laravel-zipstream.

jszobody avatar jszobody commented on July 21, 2024

That means those files don't exist on disk, or aren't readable. Double check that /tmp/test.pdf and /tmp/test2.pdf are present with proper permissions?

In v1.6 we introduced the ability to create a zip entry from raw data. At the moment you can see the logic used to determine whether a filepath on disk was provided, and if it's not a valid path we assume it's raw data instead:

if(file_exists($source)) {
return new LocalFile($source, $zipPath);
}
return new TempFile($source, $zipPath);

The exception you're getting means the above check did not find a valid file on disk, assumed it was raw file data, and passing raw data absolutely requires providing an explicit filename with extension.

Hope that helps, let me know if that doesn't solve the issue.

from laravel-zipstream.

it-can avatar it-can commented on July 21, 2024

Files are in place (1.5 works normally)

from laravel-zipstream.

it-can avatar it-can commented on July 21, 2024

I double checked, all files exist and still getting this error.

also is this function correct? it returns the filename of the file not a path?

/**
     * @return string
     */
    protected function getDefaultZipPath()
    {
        return basename($this->getSource());
    }

from laravel-zipstream.

it-can avatar it-can commented on July 21, 2024

Mmm seems that the code wants to "add" the zipfile to the archive?

$files = [
'/tmp/test.pdf',
'/tmp/test2.pdf',
];

// Zip it
        Zip::create('file.zip', $files)
            ->saveTo(storage_path('app/tmp'));

This will add, test.pdf, test2.pdf and file.zip to the archive. So file.zip does not exists and it tries to add it as a TempFile... Thats producing the error...

I think it has to do with this line

$output = File::make(Str::finish($output, "/") . $this->getName());

from laravel-zipstream.

it-can avatar it-can commented on July 21, 2024

@jszobody

from laravel-zipstream.

it-can avatar it-can commented on July 21, 2024

Thanks!!

from laravel-zipstream.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.