Я вынужден загрузить файл Excel. Файл загружается отлично, как я хочу. Но проблема в том, что когда я собираюсь изменить и сохранить содержимое файла, я получаю сообщение об ошибке, показывающее, что у меня нет доступа к файлу изменений. Итак, я должен установить права доступа к файлу при его загрузке. Но я не знаю как. Если кто-то может ответить, то это будет оценено. Вот мой код, который отлично работает как загрузка файла.
$filename = 'myfile.xlsx';
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data"; //$header and $data are the array contains data with '\t' (tabular form data).
Как я изменил свой код o это. Но все еще есть проблема. Проблема заключается в том, что этот код устанавливает разрешение только для файла, созданного на стороне сервера, а не для файла, загруженного на стороне клиента. Вот обновленный код.
$filename = 'myfile.xlsx';
$fp = fopen('/var/www/html/cakephp-3.0/webroot/downloads/' . $filename, 'w');
fwrite($fp, "$header\n$data");
fclose($fp);
chmod('/var/www/html/cakephp-3.0/webroot/downloads/' . $filename, 0777);
// Generate Excel File
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
readfile('/var/www/html/cakephp-3.0/webroot/downloads/' . $filename);
PHP имеет функцию под названием CHMOD () для изменения прав доступа к файлам.
Использование: chmod($path,0777);
Больше информации в следующем ссылка 1, ссылка 2.
Решаемые. Поскольку проблема была на стороне клиента, файл сохранялся в некоторой папке, в которой все файлы будут доступны только для чтения по умолчанию. Итак, когда я изменил расположение папки загрузки, теперь она работает отлично. Так что код был уже абсолютно правильным.