У меня есть api, который загружает изображения пользователей на сервер.
Он возьмет изображения в формате base64 и отправит их на сервер. Но проблема в том, что для некоторых пользователей это займет много времени, а для некоторых это работает хорошо.
Я не понимаю, почему это происходит. Но в целевом каталоге содержится 700 ГБ данных.
код для загрузки: ` $ file будет иметь формат изображения base64 $ this-> file = $ файл;
if ($this->id && !empty($this->path) && !is_null($file)) {
$this->storeFilenameForRemove();
}
if ($file instanceof File) {
if (isset($this->path)) {
$this->temp = $this->path;
$this->path = null;
} else {
$this->path = 'initial';
}
} else if (gettype($file) == 'string') {
if (preg_match('/data:(\w+)/(\w+);base64,/i', $file, $matches)) {
if ($matches) {
$file = preg_replace('/data:(\w+)/(\w+);base64,/i', '', $file);
$tmpFile = Array();
$tmpFile['data'] = base64_decode( str_replace(' ', '+', $file) );
if ($matches[1] === 'image') {
$tmpFile['name'] = uniqid().'.png';
} else {
$tmpFile['name'] = uniqid().'.'.$matches[2];
}
$tmpFile['handle'] = fopen( $this->getUploadRootDir().'/'.$tmpFile['name'], 'w' );
// inject the raw image data into the new file
fwrite( $tmpFile['handle'], $tmpFile['data'] );
fclose( $tmpFile['handle'] );
$this->path = $tmpFile['name'];
}
}
} else {
$this->file = $file;
}`
Размер файла и скорость Интернет-линии будут влиять на каждого пользователя по-разному.
размер файла небольшой, а скорость интернета 90 Мбит / с






Я не уверен, что выполнение preg_match в строке с кодировкой base64 - хорошая идея, хотя я не уверен, что решит все ваши проблемы, связанные со скоростью, Я уверен, что реализация другой проверки для строк с кодировкой base64 улучшит скорость .
Замените следующее:
if (preg_match('/data:(\w+)/(\w+);base64,/i', $file, $matches)) {
с этим
if ( base64_encode(base64_decode($file)) === $file){
Я думал, что дело в размере файла, но вы просто сказали нам, что он работает (означает, что загрузка выполняется быстро) для некоторых пользователей. так что это, возможно, для ваших логических операторов, как вы интерпретируете свою загрузку, какие условия вы используете, пожалуйста, поделитесь кодом здесь, чтобы мы могли вам помочь