mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-25 13:44:06 -08:00
debug trait
This commit is contained in:
parent
2325b1d8c2
commit
bbe964c6b2
|
@ -10,6 +10,7 @@ use Storage;
|
||||||
|
|
||||||
class ImageUploadRequest extends Request
|
class ImageUploadRequest extends Request
|
||||||
{
|
{
|
||||||
|
use ConvertsBase64ToFiles;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the user is authorized to make this request.
|
* Determine if the user is authorized to make this request.
|
||||||
|
@ -163,86 +164,5 @@ class ImageUploadRequest extends Request
|
||||||
|
|
||||||
return $item;
|
return $item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to get the body parameters bag.
|
|
||||||
*
|
|
||||||
* @return \Symfony\Component\HttpFoundation\ParameterBag
|
|
||||||
*/
|
|
||||||
private function bodyParametersBag(): ParameterBag
|
|
||||||
{
|
|
||||||
return $this->request;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to get the uploaded files bag.
|
|
||||||
*
|
|
||||||
* @return FileBag
|
|
||||||
*/
|
|
||||||
private function uploadFilesBag(): FileBag
|
|
||||||
{
|
|
||||||
return $this->files;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pulls the Base64 contents for each file key and creates
|
|
||||||
* an UploadedFile instance from it and sets it on the
|
|
||||||
* request.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function prepareForValidation()
|
|
||||||
{
|
|
||||||
$flattened = Arr::dot($this->base64FileKeys());
|
|
||||||
|
|
||||||
Collection::make($flattened)->each(function ($filename, $key) {
|
|
||||||
rescue(function () use ($key, $filename) {
|
|
||||||
// dont process plain files
|
|
||||||
if ( $this->file($key)){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$base64Contents = $this->input($key);
|
|
||||||
|
|
||||||
if (!$base64Contents) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// autogenerate filenames
|
|
||||||
if ($filename == 'auto'){
|
|
||||||
$header = explode(';', $base64Contents, 2)[0];
|
|
||||||
// Grab the image type from the header while we're at it.
|
|
||||||
$filename = $key . '.' . substr($header, strpos($header, '/')+1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate a temporary path to store the Base64 contents
|
|
||||||
$tempFilePath = tempnam(sys_get_temp_dir(), $filename);
|
|
||||||
|
|
||||||
// Store the contents using a stream, or by decoding manually
|
|
||||||
if (Str::startsWith($base64Contents, 'data:') && count(explode(',', $base64Contents)) > 1) {
|
|
||||||
$source = fopen($base64Contents, 'r');
|
|
||||||
$destination = fopen($tempFilePath, 'w');
|
|
||||||
|
|
||||||
stream_copy_to_stream($source, $destination);
|
|
||||||
|
|
||||||
fclose($source);
|
|
||||||
fclose($destination);
|
|
||||||
} else {
|
|
||||||
file_put_contents($tempFilePath, base64_decode($base64Contents, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
$uploadedFile = new UploadedFile($tempFilePath, $filename, null, null, true);
|
|
||||||
|
|
||||||
$body = $this->bodyParametersBag()->all();
|
|
||||||
Arr::forget($body, $key);
|
|
||||||
$this->bodyParametersBag()->replace($body);
|
|
||||||
|
|
||||||
$files = $this->uploadFilesBag()->all();
|
|
||||||
Arr::set($files, $key, $uploadedFile);
|
|
||||||
$this->uploadFilesBag()->replace($files);
|
|
||||||
}, null, false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,10 +88,14 @@ trait ConvertsBase64ToFiles
|
||||||
$body = $this->bodyParametersBag()->all();
|
$body = $this->bodyParametersBag()->all();
|
||||||
Arr::forget($body, $key);
|
Arr::forget($body, $key);
|
||||||
$this->bodyParametersBag()->replace($body);
|
$this->bodyParametersBag()->replace($body);
|
||||||
|
\Log::debug("Trait: file field $key replaced:". $request->has($key));
|
||||||
|
|
||||||
|
|
||||||
$files = $this->uploadFilesBag()->all();
|
$files = $this->uploadFilesBag()->all();
|
||||||
Arr::set($files, $key, $uploadedFile);
|
Arr::set($files, $key, $uploadedFile);
|
||||||
$this->uploadFilesBag()->replace($files);
|
$this->uploadFilesBag()->replace($files);
|
||||||
|
\Log::debug("Trait: file field $key inserted:". $request->hasFile($key));
|
||||||
|
|
||||||
}, null, false);
|
}, null, false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue