Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение файла 
:(
    Опции темы
MrDmitry
Дата 17.3.2012, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Здраствуйте. Пишу не большой шифратор файлов на аякс + php. Вот часть кода



Код

$('#confirm_key').live('click', function(event){    
            $.post('crypt.php', {'action': '2',
                                 'file' : 'files/'+$('#hide').val(),
                                 'key' :  $('#key').val()
                                      }, function(data){
                                    if (data=='0')
                                     {
                                      $("#error").html('Введен не верный код или текст для расшифровки! Введите код еще раз!');
                                     }
                                    else
                                     {
                                      file = data+'/files/'+$('#hide').val();
                                      dir = data+'/files/';
                                      $("#step1").hide();
                                      $("#step2").hide();
                                      $("#step3").hide();
                                      $("#final").show();
                                      $("#final").html('Файл успешно декодирован!<br>Ссылка на файл:<a href="'+file+'_decrypt">'+file+'_decrypt</a><br> Чтоб посмотреть все файлы пройдите по ссылки:<a href="'+dir+'">'+dir+'/</a><br>Хотите повторить операцию? <span id="retry">нажмите сюда</span>');
                                     } 
                                      });
                                      });



вот PHP

Код

    if ($_POST['action']==2)
 {
$source_file = file($_POST['file']); // Считываем весь файл в массив
$decrypt_file = fopen($_POST['file'].'_decrypt',"w");
for($i = 0; $i < sizeof($source_file); $i++)
 { 
    $result= $_SERVER['HTTP_HOST'];
    $base=base64_decode($source_file[$i]);
    fwrite($decrypt_file,$base);
   }
 }
 echo $result;
}


Это не большой отрывок кода для расшифровки файла. Так вот, хотелось бы после того как файл рас шифровался вышло стандартное браузерое окно с предложением сохранить файл. Если нажата отмена то расшифрованный файл удалялся с сервера, если файл был сохранен, то по окончанию сохранения(скачивания файла на клиент) файл также удалялся. Наверное написал запутано, но вопрос, такое вообще реально реализовать? 

Это сообщение отредактировал(а) MrDmitry - 17.3.2012, 00:48
PM MAIL   Вверх
iff
Дата 17.3.2012, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Возможно php устанавливает заголовок Content-Type как text/html или  text/plain. Его можно изменить функцией header, предварительно определив по типу присланного файла.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
MrDmitry
Дата 20.3.2012, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Это хорошо. Но а как начать процесс скачивания файла клиенту, узнать что процесс завершен, и удалить файл?
PM MAIL   Вверх
MrDmitry
Дата 10.4.2012, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Извините что поднимаю тему. В общем вопрос в том как при помощи php сохранить файл расширение которого заранее не известно. То есть 

То есть, клиент зашифровывает какой то документ.

Патом расшифровывает, расшифрованый документ хранится на сервере, нужно предложить этот файл сохранить стандартным окном браузера, а после его удалить, такое возможно сделать?
PM MAIL   Вверх
Aliance
Дата 10.4.2012, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Я бы сделал так: после выполнения ajax-post запроса в callback-функции вызывать что-то типа 
Код
location.href = 'decrypt.php?file=' + file


А в самом decrypt.php предлагать пользователю скачивать файл. В общем-то там же можно и удалить его, но скорее всего если пользователь откажется от скачивания например, ты об этом не узнаешь и все равно удалишь.

Для того чтобы дать браузеру понять, что файл нужно скачать, пишем следующий заголовок:
Код
Header('Content-type: application/octet-stream');


Заголовок
Код
Header("Content-Disposition: attachment; filename='ololo.txt'"); 

поможет установить название скачиваемого файла (иначе будет decrypt.php).

Так же еще можно поддержать докачку файлов, путем комбинации заголовков
Код

Header("HTTP/1.1 206 Partial Content");
Header("Accept-Ranges: bytes"); 
Header("Content-Length: 100500"); 
Header("Content-Range: bytes 0-500"); 


Например подробнее об этом можно почитать тут.

В общем-то тема мало относится к JS, скорее к PHP.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.