Я бы попробовал расширить класс qqFileUploader
. Итак, в коде псевдо:
class myClass extends qqFileUploader{
function handleUpload(){
}
}
Затем используйте эту функцию handleUpload
, чтобы переопределить то, что в данный момент выполняется в этой функции (то есть изменение размера, создание водяных знаков и т. Д.).
ОБНОВЛЕНИЕ: Когда я присматривался к вопросу, мне пришло в голову, что вы можете не возражать против редактирования исходного кода. Я привык стараться не взламывать ядро (используя joomla, wordpress и т. Д.).
Для того, что вы хотите сделать (перехватить файл перед его сохранением), вы захотите вставить свой код в функцию handleUpload
между оператором if(!$replaceOldFile)
и оператором if ($this->file->save($uploadDirectory . $filename . '.' . $ext))
.
Переменная $this->file
- это файл, который вы хотите редактировать. Это файл, над которым вы хотите поработать. Вы можете создавать свои собственные пользовательские функции, если хотите, просто добавив функцию в класс qqFileUploader
, а затем вызвав ее с помощью $this->yourFunction()
.
Надеюсь, это поможет вам. Если у вас есть еще вопросы, я постараюсь на них ответить.
ВТОРОЕ ОБНОВЛЕНИЕ: Вот пример того, как вы можете манипулировать данными перед их сохранением. Я просто использовал превращение изображения в оттенки серого в качестве примера, но вы можете делать все что угодно. Этот код должен быть помещен там, где я упоминал ранее, между 2 if
операторами.
$image = 'uploads/'.$this->file->getName();
$im = imagecreatefrompng($image);
if($im && imagefilter($im, IMG_FILTER_GRAYSCALE)){
echo 'Image converted to grayscale.';
imagepng($im, $image);
}else{
echo 'Conversion to grayscale failed.';
}
imagedestroy($im);
Тогда вы измените это:
if ($this->file->save($uploadDirectory . $filename . '.' . $ext))
на это:
if ($this->file->save($uploadDirectory . $im))
Я только что проверил это, так что я знаю, что это будет работать для вас. Кроме того, я использовал png вместо jpeg, но это только потому, что у меня png валяется:)