2014-01-27 4 views
1

У меня возникают проблемы с перемещением файлов после загрузки. Похоже, что загрузка прошла успешно, без сообщений об ошибках. У меня есть 777 в папке для загрузки. Система - wordpress, и я понятия не имею, что я делаю неправильно.Перемещение загруженных файлов с помощью php

Следует отметить, что форма находится внутри другой формы. Конечным результатом является загрузка изображения (эта форма, которая находится внутри большего), которая позволит пользователю обрезать изображение и добавлять теги, описание названия и т. Д. Перед отправкой второй формы. Окончательное представление второй формы будет публиковаться в пользовательский тип сообщения, и это работает нормально. только движущиеся файлы и jcrop, о которых я беспокоюсь.

Может ли кто-нибудь увидеть опечатку?

Я не могу.

<form method="POST" action="" enctype="multipart/form-data"> 
       <label for="image_upload">Image Upload</label> 
       <input id="image_upload" type="file" class="text_input" value="" name="file"> 
       <input id="image-upload" type="submit" class="button" value="Upload" name="upload"> 

       <!-- <img id="image-upload" src="<?php echo get_template_directory_uri(); ?>/images/sago.jpg" alt=""> --> 

        <?php 
        // Process the upload 
         if (!empty ($_POST['upload'])) { 

          $allowedExts = array("gif", "jpeg", "jpg", "png"); 
          $temp = explode(".", $_FILES["file"]["name"]); 
          $extension = end($temp); 
          if ((($_FILES["file"]["type"] == "image/gif") 
          || ($_FILES["file"]["type"] == "image/jpeg") 
          || ($_FILES["file"]["type"] == "image/jpg") 
          || ($_FILES["file"]["type"] == "image/pjpeg") 
          || ($_FILES["file"]["type"] == "image/x-png") 
          || ($_FILES["file"]["type"] == "image/png")) 
          && ($_FILES["file"]["size"] < 100000) 
          && in_array($extension, $allowedExts)) 
           { 
           if ($_FILES["file"]["error"] > 0) 
           { 
           echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
           } 
           else 
           { 
           echo "<div> Upload: " . $_FILES["file"]["name"] . "<br>"; 
           echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
           echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
           echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br> </div>"; 

           //set temp dir path 
           $path = $_SERVER['DOCUMENT_ROOT']; 
           $upload_dir = $path . '/wp-content/uploads/jcrop_temp/';  

           if (file_exists($path . '/wp-content/uploads/jcrop_temp/' . $_FILES["file"]["name"])) 
            { 
            echo "<div style='border: solid 1px #BF5738; color: #BF5738; padding: 1em;'> The File: <span style='color: black;'>" . $_FILES["file"]["name"] . "</span> already exists. Please rename the file before trying again. </div>"; 
            } 
           else 
            { 
            move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]); 
            echo "Stored in: " . $upload_dir . $_FILES["file"]["name"]; 
            echo "<div style='border:solid 1px #E1E1E1; max-width: 710px; text-align: center;'> 
              <img id='image-upload' src='" . "/wp-content/uploads/jcrop_temp/" . $_FILES["file"]["name"] . "'> 
             </div> 
             "; 
            } 
           } 
           } 
          else 
           { 
           echo "Invalid file"; 
           } 

          //end upolad if 
          } 

        ?> 
      </form> 
+0

Насколько велики файлы? –

+0

25k, не больше предела, который я уже увеличил до возмутительного 100000 для тестирования – vincentieo

ответ

1

ОК, так что это извилистый обработать. Достаточно просто за пределами Wordpress, но внутри ... его боль.

Было несколько вещей, которые мне нужно было изменить, во-первых, размер файла был в байтах не kb! Идиот! ... (Спасибо Панаме Джеку за то, что заставил меня снова взглянуть на него и напомнить мне, чтобы я не предполагал.)

Во-вторых, функция move_uploaded_file() НЕ работает внутри wordpress. Вместо этого я сколотил что-то из этого полезного поста: http://wordpress.org/support/topic/using-move_uploaded_file-in-a-plugin

$path_array = wp_upload_dir(); 
     $path = str_replace('\\', '/', $path_array['path']); 
     $old_name = $_FILES["image_upload_path"]["name"]; 
     $split_name = explode('.',$old_name); 
     $time = time(); 
     $file_name = $time.".".$split_name[1]; 
     move_uploaded_file($_FILES["image_upload_path"]["tmp_name"],$path. "/" . $file_name); 

(. Пожалуйста, обратите внимание, если вы используете этот код вы должны будете знать, что вы делаете, как ссылки на вопрос и ответ не коррелирует)

С этим я смог отправить загруженный файл в каталог uploads и сгенерировать различные размеры изображений, которые нравится Wordpress (80x80, средний, большой и т. Д.).

Почему WP не разрешает move_uploaded_file находится за пределами ... кто-нибудь?

В любом случае, это возможно, просто боль. Надеюсь, это поможет.

Другие ресурсы, которые я использовал, чтобы получить его работу: http://cube3x.com/2013/03/upload-files-to-wordpress-media-library-using-php/

move_uploaded_file() wordpress plugin

1

Проблема с этой линии:

move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]); 

Вы должны указать закачанный каталог в качестве второго параметра, например, так:

move_uploaded_file($_FILES["file"]["tmp_name"], $upload_dir.$_FILES["file"]["name"]); 
+0

Привет, спасибо за указатель. Я забыл добавить upload_dir снова после тестирования и попытаться просто загрузить в корневой каталог сервера. Если я прошу и эхо $ upload_dir. $ _ FILES ["file"] ["name"]) ;, я получаю это:/Users/vince/Sites/lolhatespeech/wp/wp-content/uploads/jcrop_temp/1-тест-image.png. По-прежнему нет файлов в папке и никаких ошибок. Я здесь flumexed! – vincentieo

+0

Итак, я разделил его на отдельную форму ... теперь все в порядке для jpg-файлов, но я получаю недопустимый файл для png ... не знаю почему. Кроме того, я не назвал форму, и теперь я вызываю скрипт с isset $ _POST ['upload'] – vincentieo

+0

Это для каждого png? PNG занимают значительно больше места, чем JPEG или GIF. Возможно, размер файла слишком велик. Попробуйте сделать 1x1 PNG и загрузите это. –

Смежные вопросы