CodeSleeve / stapler

ORM-based file upload package for php.
http://codesleeve.com
Other
538 stars 144 forks source link

Keep original file on disk #175

Open daniel-de-wit opened 7 years ago

daniel-de-wit commented 7 years ago

I'm working on a Laravel 5.3 project where the laravel stapler package has been integrated with my model. For testing purposes i've made some database seeds that create some dummy records.

While attaching files to these records, Stapler deletes the original file on disk? For example:

$filePath = 'some_dir/myfile.png';

$record = MyModel::create([
    'image' => $filePath,
]);

After running, the file located at $filePath is deleted from disk. This is not what I expected, how should I stop Stapler from deleting my files?

petrmach commented 6 years ago

In case this is still useful to somebody: When you create the file by path input, Stapler moves the file to the storage. Not sure if that's a feature or a bug, but it does feel inconsistent with e.g. upload from an url.

The workaround would be to just create a temp copy of the file you're uploading.

$filePath = 'some_dir/myfile.png';
$tmpFilePath = sys_get_temp_dir() . "/tmpFile.png";
copy($filePath, $tmpFilePath);

$record = MyModel::create([
    'image' => $tmpFilePath,
]);