2012-07-10 2 views
0

사용자가 텍스트 입력과 파일 업로드를 모두 받아 데이터베이스에 저장하는 데 문제가 있습니다. .gsp 페이지에는 두 가지 형식이 있습니다. 하나는 텍스트 입력 용이고 다른 하나는 파일 업로드 용입니다. 파일을 저장하거나 텍스트 입력을받을 수 있지만 둘 다 할 수는 없습니다. 텍스트 필드 입력을위한 태그 안에 제출 버튼을 배치하면 태그를 저장하고, 태그에 저장하면 파일을 저장하지만 어떻게 하나의 제출 버튼을 클릭해도 둘 다 할 수 있습니다. 여러 개의 제출 버튼을 갖고 싶지 않습니다. 두 양식은 동일한 메소드를 호출하여 데이터를 저장합니다. 버튼을 제출파일과 텍스트를 동일한보기로 업로드하십시오. grails

http://www.ibm.com/developerworks/java/library/j-grails06099/index.html

+1

당신은 자신의 수락에 대한 내 대답을 받아 들일 수 없습니까? 비록 내가 당신에게 전체 솔루션을 주었지만 당신이 한 것은 기본적으로 폼 태그의 차이점에 대해 말한 것을 다시 말한 것입니다. IMHO는 매우 나쁜 형태이며 사람들이 당신을 돕는 것을 멈추게 할 것입니다. – Kelly

+0

야, 당신이 더 기분이 좋아지면 복수 응답을 선택할 수 있다고 생각했습니다. 내게 중요하지 않은 답변을 선택하겠습니다. – Ameya

+2

당신을 도와주는 사람들을 인정하는 것입니다 - 요. – Kelly

답변

1

모든 <g:uploadForm...> 태그는 형식 enctype을 multipart/form-data으로 설정합니다. 표준 텍스트 입력 및 파일을 업로드하려면 보통 다음을 수행하십시오.

//GSP 
<g:form method="post" enctype="multipart/form-data" action="update"> 
    <input type="text" name="myTextField" id="myTextField" />  
    <input type="file" id="myFile" name="myFile" /> 
    <g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" /> 
</g:form> //closing tag fixed 

그러면 컨트롤러에서 수행하는 작업은 업로드 된 파일을 저장하는 방법에 따라 다릅니다. byte [] myFile에 저장하는 경우 필드 이름이 올바르게 설정되어 있으면 자동으로 바인딩되므로 아무 것도하지 않아도됩니다. 그냥 작동합니다. 파일 시스템에 저장하는 경우

//controller 
myInstance.properties = params //binds text as well as upload files 

당신은 (바로 manual에서) 같은 것을 할 수 있습니다 : 그것은 또한 경우 대신이 <g:form> 당신은 단지 그것에게 할 필요없이 작동

//Controller 
def f = request.getFile('myFile') 
if (f.empty) { 
    flash.message = 'file cannot be empty' 
    render(view: 'uploadForm') 
    return 
} 
f.transferTo(new File('/some/local/dir/myfile.txt')) 
response.sendError(200, 'Done') 
0

이 내용을 제출 :

이 사이트에있는 예제는 정보가 하나의 전송 버튼의 클릭으로 보내지는 어떻게 말을하지 않는 내가 무엇을 찾고 있지만입니다 그 안에 포함 된 형태의 질문에 대한 답은 a) 양식 1 개와 제출 버튼 1 개 또는 b) 각각 2 개가 있습니다.

+0

그런 다음 제출 버튼 하나만 사용하여 여기에서 어떻게 처리할까요? http://www.ibm.com/developerworks/java/library/j-grails06099/index.html – Ameya

+0

링크는 아쉽게도 스 니펫을 보여주기 때문에 ' 태그 안에있는 것처럼 보입니다. – OnResolve

+0

그래, 문제가있어, 내가 할 수있는 각각 별도로하지만 그것을 함께하는 것은 그들이 보여주지 않았고 내가 무엇을 필요합니다. uploadForm 태그를 일반 양식 태그 안에 넣으려고했지만 어느 쪽도 작동하지 않았습니다. – Ameya

0

<g:uploadForm> 태그

관련 문제