dışında bir MultipartRequest olsun ve ben göndermek için ayarlanmış yöntemle bir <g:uploadForm>
var, ama benim denetleyicisi eylem bir MutlipartRequest alamıyorum nasıl. Bunun yerine, getFile()
yöntemine sahip olmayan bir Servlet3SecurityContextHolderAwareRequestWrapper alıyorum. Döküm denedim, request.request
ile sarmalayıcıdan istek almayı denedim ve benzer bir sorunla birlikte başkalarına önerdiğim bir sürü başka şeyi denedim, ama yine de zar yok. Eminim basit bir şey eksik. Bunu yapmaya eğilimliyim, ama eğer kimse bana doğru yönde işaret ederse çok minnettar olurdum. İşte Ben Grails 2.4.3 kullanıyorum bir Servlet3SecurityContextHolderAwareRequestWrapper
<g:uploadForm method="POST" action="uploadSupplemental" >
<div class="modal-header">
<h3 class="modal-title" id="myModalLabel">Upload Supplemental Data File</h3>
</div>
<div class="modal-body">
<label for="fileInput">Choose file to upload:</label>
<input type="file" id="fileInput" name="supplementalData" />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<input type="submit" class="btn btn-primary" />
</div>
</g:uploadForm>
Ve işte benim denetleyicisi eylem var: Burada
def uploadSupplemental() {
MultipartRequest multipartRequest = request as MultipartRequest
def file = multipartRequest.getFile('supplementalData')
if (file){
flash.message = "File found!!"
} else {
flash.message = "File NOT found. :-("
}
redirect action:'list'
}
Ve hata alıyorum oluyor:
URI/app/yükleme/uploadSupplemental Sınıf groovy.lang.MissingMethodException Message Yöntem yok İmza: org.springfr amework.security.web.servletapi.HttpServlet3RequestFactory $ Servlet3SecurityContextHolderAwareRequestWrapper.getFile() değişken türleri için geçerli olan: (java.lang.String) değerleri: [supplementalData] olası çözümler: GetXml(), GetPart (java.lang.String), getAt (java.lang.String), getAt (java.lang.String), getLocale(), getJSON()
Biraz daha bilgi: Ben isteği erişmek ilk kez benim denetleyicisi eylem içinde istek tiptedir: org.springframework.security.web.servletapi.HttpServlet3RequestFactory $ Servlet3SecurityContextHolderAwareRequestWrapper. Bunun için getRequest() öğesini çağırırsam, org.springframework.security.web.context.HttpSessionSecurityContextRepository $ Servlet3SaveToSessionRequestWrapper alırım. Hala bir sarıcı, bu yüzden bu konuda getRequest ve bir org.springframework.security.web.firewall.RequestWrapper, başka bir sarıcı olsun. (devamı ...) –
Bir org.springframework.security.web.firewall.RequestWrapper.getRequest çağrısı, org.apache.catalina.core.ApplicationHttpRequest. Sonunda bir istek nesnesine sahibim, ama olması gereken MultipartRequest değil. Hala güldü. –
'Config.groovy' içinde ayarlanmış grails.web.disable.multipart'ın değeri nedir? İşte ilgili [JIRA sorunu] (https://jira.grails.org/browse/GPSPRINGSECURITYCORE-191) ve bir SO [yinelenen soru] (http://stackoverflow.com/questions/21764419/grails-upload- aynı istisnayı bildiren dosya-imza-yöntem-getfile). Ayrıca, kullanıcının yükleme eyleminden önce doğrulandığından emin olun. Denetleyicide '@ Secure' kullanıldığından emin olun. – dmahapatro