Reputation: 1
I'm working with Laravel 10x. When I try to retrieve a .cdr file that I saved on my dedicated storage server, the file gets altered.
I've attempted two methods: using ZipArchive and retrieving the file directly. Here's the code for each approach:
Using ZipArchive:
$zipfile = 'Arquivos.zip';
$zip = new \ZipArchive();
if ($zip->open($zipfile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE)) {
foreach ($this->itens as $item) {
if ($item->item->imagem && $item->item->arquivo) {
$files = [
public_path('storage/compras/itens/' . $item->item->imagem),
public_path('storage/compras/itens/' . $item->item->arquivo),
];
} elseif ($item->item->imagem) {
$files = [
public_path('storage/compras/itens/' . $item->item->imagem),
];
} elseif ($item->item->arquivo) {
$files = [
public_path('storage/compras/itens/' . $item->item->arquivo),
];
}
foreach ($files as $file) {
$zip->addFile($file, basename($file));
}
}
}
$return = $return->attach($zip->filename, [
'mime' => 'application/zip',
]);
$zip->close();
return $return;
In this code snippet, $item->item->arquivo
represents the .cdr file.
Direct Method:
foreach ($this->itens as $item) {
$return->attachData($this->itens->arquivo($item->item->arquivo), 'arquivo', [
'mime' => 'application/cdr',
]);
}
Here's the arquivo method in the model:
public function arquivo($arquivo) {
$arquivo_storage = Storage::disk('storage_itaip')->get("compras/itens/$arquivo");
return $arquivo_storage;
}
Despite using both methods, the .cdr file ends up altered. Can someone assist me with this issue?
Upvotes: 0
Views: 16