2013-07-26 3 views
1

Как динамически изменять загруженное имя файла с помощью php? Этот лист Excel был преобразован из таблицы HTML с использованием Javascript. Теперь я хочу динамически изменять имя файла при каждом его загрузке. Я использую кнопку типа input в качестве кнопки загрузки.Динамически изменить загруженное имя файла


От редакции: На основе замечаний, этот вопрос может быть перефразировать следующим образом.

Я хочу, чтобы люди могли загружать лист Excel с сервера. Как принудительно загрузить файл и указать имя файла в зависимости от месяца? При загрузке файла он показывает “ download.xls ”

No code provided

См комментарии:

+1

И какой код вы используете для загрузки файла? – putvande

+0

Кроме того, вы хотите изменить имя файла на сервере или сохранить имя файла на сервере одинаково, но изменить имя загруженного файла? – putvande

+1

ya Мне хотелось бы сохранить имя файла на сервере то же самое – rahul

ответ

2

Пишешь

Этот первенствует лист был преобразован из HTML таблицы с помощью Javascript.

Это означает, что HTML-таблица уже доступна как файл EXCEL со стороны клиента.

Если это так, нет причин перетаскивать преобразованный EXCEL-файл с клиента обратно на сервер, чтобы клиент мог снова загрузить его с сервера. Это не имело бы смысла и бесполезной полосы пропускания в бесполезном цикле.

Другими словами: когда файл EXCEL уже находится в Javascript-памяти клиента, все, что вам нужно сделать, это сохранить ваш файл EXCEL (преобразованный Javascript) в имя файла на основе чего-то вроде Math.random() Javascript. Что касается простого подхода к экономии файлов, такие вещи, как возможности сохранения файлов в формате HTML5 (как один из многих способов сделать это), могут стать вашими лучшими друзьями.

Подумайте об этом: если вы сидите на диване у себя дома, вы не едете на работу, чтобы быть в состоянии вернуться домой и выпить пива из холодильника на кухне вашего дома, не так ли? Правильно, вы просто остаетесь дома и заходите на кухню, чтобы схватить это пиво. ;)

То же самое: если вы конвертируете его на стороне клиента и клиент имеет файл в памяти своего компьютера, пусть он сохранит его на своих дисках. Не заставляйте его загружать весь файл, чтобы он мог скачать его ... как сказано: Javascript's Math.random() позволяет вам создавать случайное число, которое вы можете использовать для создания случайных имен файлов.

EDIT

на основе OP's question in comment:

но, как сохранить эти загруженные файлы с динамическим именем файла в соответствии с месяцем.

Для создания файла на основе месяца, вы бы использовать Дату JavaScript как это:

var now = new Date(); 
var month = now.getMonth(); 

И если вы ищете подсказки о том, как сохранить свой файл на сторону клиента, вы могли бы хотят, чтобы погрузиться в:

Если вы хотите, чтобы справиться с этим S ервере стороне и нажмите файл в сторону клиента, используя PHP с вашим собственным именем файла, основанного на year-month-day, вы могли бы пойти как это:

<?php 
$realname = './data.xls'; 
if (file_exists($realname)) 
{ 
    $randname = 'YourExcelFilename'.gmdate('Y-m-d').'.xls'; 
    header('Content-type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment; filename='.$randname); 
    header('Content-Length: '.filesize($realname)); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    ob_clean(); 
    flush(); 
    readfile($file); 
} 
exit(); 
?> 

(EDIT 2: Исправленная приведенный выше пример, удалив 2 ненужные заголовки thanks to a comment by @Herbert)

Если вы хотите больше альтернативных решений, вы можете захотеть, чтобы проверить ответы на the two questions I linked in my first comment поскольку ваш вопрос является потенциалом дубликат из этих вопросов

+0

, но как сохранить эти загруженные файлы с динамическим именем файла в соответствии с месяцем. – rahul

+0

, когда я загружаю файл, который он показывает download.xls – rahul

+0

@rahul Посмотреть мой ** EDIT **. Если ваш файл теперь говорит 'download.xls', вам просто нужно будет переименовать его с помощью' month' var, который вы видите в моем примере EDIT. –

2

Применить сгенерированное имя файла к заголовку Content-Disposition.

header("Content-Disposition: attachment; filename=\"$random_filename\""); 
header('Content-type: application/vnd.ms-excel'); 
readfile($actual_filename); 
Смежные вопросы