Использование только PHP и HTML, чтобы вести себя как JavaScript - PullRequest
1 голос
/ 30 марта 2012

У меня есть задание для школы, и я не уверен, как учитель хочет, чтобы мы выполнили задачу.

  1. Нам нужно получить загруженный файл только как временный файл (index.php)
  2. Размер выходного файла (upload.php)
  3. Пользователь может подтвердить сохранение файла или нет (upload.php)

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

index.php

<html>
<form action="http://mysite.org/~me/upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

upload.php

<?php
if (($_FILES["file"]["type"] == "application/vnd.ms-excel"))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

    }
    }
  ?>
  <form action="" method="POST">
  <input type="submit" value"YES please save">
  <form>
  <?php
  if (isset($_POST['submit']))
  {
    //Code for saving file
    echo 'File saved!';
  }
  ?>

Можно ли пойти по этому пути? Мое последнее утверждение эха не работает, поэтому я сомневаюсь, что сохранение файла также будет.

Ответы [ 4 ]

1 голос
/ 30 марта 2012

Надеемся, что следующие комментарии помогут вам с частью, на которой вы застряли.

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

Одна интересующая вас функция будет move_uploaded_file () который переместит временный файл из загрузки в постоянное место по вашему выбору.

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

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

Затем, когда человек отправляет форму, говоря, что хочет сохранить файл, вы можете переместить его снова в постоянное место, или, если они говорят нет, затем удалите файл.Проблема в том, что если они никогда не скажут «да» или «нет», то файл останется в системе.

Надеюсь, это поможет.

0 голосов
/ 30 марта 2012

Ваш последний оператор if в PHP ищет переменную записи с именем submit, но у вашего тега <input type="submit"> нет имени.

0 голосов
/ 30 марта 2012

Файл сохраняется во временную папку после завершения загрузки.Вы можете получить доступ к этому временному файлу с помощью $_FILES['file]['tmp_name'] НО , файл будет удален в конце запроса, если вы ничего не сделаете с ним.Это означает, что когда пользователь нажимает кнопку YES please save, файл больше не будет доступен.

Это означает, что у вас есть , чтобы сначала сохранить файл на диск,когда вы впервые вызываете файл upload.php.Невозможно сохранить файл «в памяти», пока пользователь решает, сохранять его или нет постоянно.

0 голосов
/ 30 марта 2012

Да, это должно работать.Ваши операторы if будут перехватывать отправку формы и затем отображать вашу строку там.Несколько небольших ошибок в вашей разметке:

<input type="submit" value"YES please save">

Должно быть

<input type="submit" value="YES please save" name="submit">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...