2012-08-15 2 views
0

지난 며칠 동안 저를 곤혹스럽게 만들었습니다. Drupal 7에서 모달 형식을 사용하고 있으므로 hook_form 시스템 외부에서 작업하여 이미지를 업로드하려고합니다. 이 양식은 아약스 게시물을 통해 제출되며, 게시물과 함께 파일을 제출할 수 없습니다. 내가 한 일은 아약스 콜백에서 파일 입력으로 새 양식 요소를 만든 다음 제출을 트리거하고 내 모듈 정의 페이지에 게시합니다.Drupal 7 파일 업로드 (hook_form 제외)

원래 입력 요소 :

<input type="file" id="chooseImage" name"someImage" class="form-file"> 

JS 제출 트리거 :

$.ajax({ 
type:'POST', 
url:$('#originalForm').attr('action'), 
data: data, 
success: function(response) { 
    if (response.success) { 
     $('<form id="imageForm" method="POST" action="upload/image/'+response.data.nid+'"></form>').appendTo($('#imageSubmit')); 
     $('#chooseImage').appendTo($('#imageForm')); 
     console.log($('#imageForm')); 
     $('#imageForm').submit(function(e){ 
      console.log(e); 
      alert('freeze! hammertime...'); 
     }); 
     //This should post the file but it isn't... 
     $('#imageForm').trigger('submit'); 
    } 
}, 
dataType:'json' 
}); 

가 이벤트를 제출는 잘 파일 속성을 보여줍니다. 그러나 내 페이지 콜백이 끝나는 백엔드에서 ...

function myModule_image_upload($param){ 
     error_log('number of files = '.sizeof($_FILES)); 
    } 

게시 된 파일이 없습니다. .submit()이 실행 된 후 브라우저에서 파일의 데이터를 제거하고있는 것 같아요. 그럴 경우에는 아무 것도 할 힘이 없을 것입니다. 따라서 별도의 메뉴를 구현해야합니다. 이미지 업로드를위한 후크 시스템.

또한이 작업이 실제로 무엇을 하던지간에, 영구적으로 워치 독을 중단하여 새로운 덤프를 다시 가져와야합니다.

답변

0

이 시도 :

$('<form id="imageForm" enctype="multipart/form-data" method="POST" action="upload/image/'+response.data.nid+'"></form>').appendTo($('#imageSubmit')); 

그래서 당신은에 enctype을 설정하는 것을 잊었다.

또 다른 오류 :

<input type="file" id="chooseImage" name"someImage" class="form-file"> 

당신의 응답을

<input type="file" id="chooseImage" name="someImage" class="form-file"/> 
+0

감사 할 수 있어야합니다. 그렇습니다, 그것은 중요한 부분이고 어떤 점에서 나에게 문제를 일으킬 것 같지만, 불행히도,이 특별한 문제를 해결하지는 못했습니다. – user1496391

+0

그리고 그것은 그것을 할 것입니다 (누락 =). – user1496391

관련 문제