@Ace_Viral

Нужно вместо хэша возвращать имя файла, при это сохранять файлы как хэш на сервере?

Добрый день, у меня есть модель Upload которая и отвечает за выдачу url на фронт для скачивания файла вот это метод:
public function getUrl()
	{
		//return Yii::getAlias('@web') . '/' . $this->getFilePath(false);
		// return Yii::$app->response->sendFile(Site::UPLOADS_DOMAIN . '/' . $this->getFilePath(false), $this->original_name);
		return Site::UPLOADS_DOMAIN . '/' . $this->getFilePath(false);
		//return \yii\helpers\Url::home(true) . '/' . $this->getFilePath(false);
	}

В итоге у меня файл скачивается по урлу:
мой домен/upload/[year]/[month]/[day]/[hash].ext
мне надо чтобы выдавался урл с именем, я пытался менять в методе getFileName вместо hash выдавать original_name но это не решает проблему потому что теперь все файлы в системе больше сохраняются как хэш
public function getFileName($withExtension = false)
	{
		$ext = $withExtension ? '.' . $this->getFileExtension() : '';
                // return $this->original_name . $ext;
		return $this->hash . $ext;
	}

нашел такой метод как sendFile он закоменчен выше, но почему при запросе на какой либо файл встает бесконечная загрузка и ответ не приходит, помогите пожалуйста
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
так как мне передать это имя пользователю
Из всего диалога в комментариях должен быть вывод:
1) урл файла для скачивания может быть любым, его трогать не надо.
2) Чтобы файл скачался под нужным именем, в заголовки нужно добавить принудительное переименование на клиенте
header('Content-Disposition: attachment; filename="' . $meta['name'] . '";', false);
, где $meta['name'] - имя под которым должно сохраниться у пользователя.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы