Загрузка файла PHP - PullRequest
       25

Загрузка файла PHP

0 голосов
/ 15 февраля 2012

У меня есть базовая форма загрузки:

<form method="post" action="" enctype="multipart/form-data" >    
   <input type="file" name="logo">
   <input type="submit" class="button-primary" value="Upload Image">
</form>

И вот как я загружаю вещи (это функции WordPress, но вопрос скорее связан с php, поэтому я спрашиваю здесь, а не по wp-se):

if ($_FILES) {
  foreach ($_FILES as $file => $array) {
    $uploaded = insert_attachment($file,$post_id);
    $uploaded_src = wp_get_attachment_url($uploaded);
    update_option('logo', $uploaded_src);
  }     
}

Теперь есть две проблемы, и я не уверен, как их исправить:

  1. Когда пользователь загружает файл и нажимает кнопку «Загрузить изображение», изображение загружается. Но если пользователь обновляет страницу, iamge загружается еще раз. и снова, и снова. Я полагаю, что форма отправляется после обновления. Какой самый простой способ исправить это?

  2. Поскольку вы видите, что мой код обновляет только одну опцию, называемую "логотип", как получить имя полей загрузки и передать его в цикл foreach, чтобы я мог разместить больше полей загрузки на своей странице? Я имею в виду что-то вроде: update_option('ThisFormUploadInputID', $uploaded_src);.

Большое спасибо! :)

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Когда пользователь загружает файл и нажимает кнопку «Загрузить изображение», изображение загружено. Но если пользователь обновляет страницу, iamge загружается один раз снова. и снова, и снова. Я считаю, что форма отправляет сама Какой самый простой способ исправить это после обновления?

шаблон PRG - при успешном POST отправьте заголовок Location и завершите сценарий. Следующим запросом от браузера будет GET, и при обновлении страницы не будет повторной отправки формы.

Что касается второго вопроса, print_r($_FILES) может помочь.

0 голосов
/ 15 февраля 2012

По второму вопросу:
Вам нужно больше полей для загрузки большего количества файлов или руководящих данных?Если файлы так, то да, как ответ раньше - посмотрите в var_dump($_FILES).Если вам нужны какие-то входные данные, ищите их в $_POST.

И об обновлении.
Итак, да, вы можете отправлять заголовок Location с php, но вы можете получить предупреждение Headers already sent,Так что используйте JS тогда <script>document.location="www.yourdomain.com"</script>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...