2014-01-27 4 views
1

업로드 한 파일을 옮기는 데 문제가 있습니다. 업로드가 오류없이보고 된 것 같습니다. 업로드 할 폴더에 777이 있습니다. 시스템은 워드 프레스이고 내가 뭘 잘못하고 있는지 전혀 모른다.업로드 된 파일을 PHP로 이동

양식은 다른 양식 안에 있음을 유의해야합니다. 최종 결과는 사용자가 두 번째 양식을 제출하기 전에 이미지 자르기 및 태그, 제목 설명 등을 추가 할 수있는 이미지 업로드 (이 양식은 큰 이미지 안에 있음)를 갖는 것입니다. 두 번째 양식의 최종 제출은 맞춤형 게시물 유형에 게시되며 정상적으로 작동합니다. 그냥 움직이는 파일과 jcrop 내가 걱정입니다.

아무도 오타를 볼 수 있습니까?

할 수 없습니다.

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

당신은과 같이, 두 번째 매개 변수에 업로드 된 디렉토리를 지정해야합니다 :

<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); 

(. 당신은 당신이 질문에서 참조로 무슨 일을하고 있는지 알고 있고 상관 관계가없는 응답해야합니다이 코드를 사용하는 경우주의하십시오)

대신 내가 함께이 유용한 게시물에 무언가를 자갈길

업로드 된 파일을 업로드 디렉토리로 보내고 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"], $upload_dir.$_FILES["file"]["name"]); 
+0

안녕하세요, 포인터 감사합니다. 테스트를하고 서버 루트에 업로드하려고 시도한 후에 upload_dir을 다시 추가하는 것을 잊었습니다. $ upload_dir. $ _ FILES [ "file"] [ "name"]);를 묻는다면/Users/vince/Sites/lolhatespeech/wp/wp-content/uploads/jcrop_temp/1-test-image.png. 폴더에 파일이없고 오류가 없습니다. 나는 여기에 flumexed! – vincentieo

+0

좋아, 그래서 그것을 별도의 양식으로 제거했습니다 ... 이제 모든 jpg 파일에 대한 괜찮아요하지만 png에 대한 잘못된 파일을 ... 왜 몰라. 또한 양식 이름을 지정하지 않았으며 이제는 isset $ _POST [ 'upload']로 스크립트를 호출합니다. – vincentieo

+0

모든 PNG에 해당합니까? PNG는 JPEG 또는 GIF보다 훨씬 더 많은 공간을 차지합니다. 파일 크기가 너무 클 수 있습니다. 1x1 PNG로 만들고 업로드 해보십시오. –

관련 문제