10

私は自分のgspにファイルをgrailsでアップロードしようとしています:

<g:form id="update" url="[action: 'updateStatus',]">
     <g:textArea name="message" value="" cols="3" rows="1"/><br/>
     <g:textField id="tagField" name="tag" value=""/><br/>
     <input id="inputField" type="file" name="myFile" enctype="multipart/form-data" />
     <g:submitButton name="Update Status"/>
 </g:form>

私のコントローラーには次のものがあります。

 def updateStatus(String message) {

        if (params.myFile){
            def f = request.getFile('myFile')

        }

リクエストgetファイルは次のエラーで失敗しています:

No signature of method: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [myFile]

これが私が持っているものであり、他のコントローラーでgetFileを使用している理由は何でも問題ありません。

4

3 に答える 3

8

ここに作業ファイルの送信があります:

フォーム(gsp)

<form method="post" enctype="multipart/form-data">
<p><input type='file' name="cfile"/></p>
<input type='submit'>
</form>

送信されたファイルを「D:/submitted_file」に保存するコントローラー:

def index() {
    if(params.cfile){
        if(params.cfile instanceof org.springframework.web.multipart.commons.CommonsMultipartFile){
            new FileOutputStream('d:/submitted_file').leftShift( params.cfile.getInputStream() );
            //params.cfile.transferTo(new File('D:/submitted_file'));
        }else{
            log.error("wrong attachment type [${cfile.getClass()}]");
        }
    }
}

これは私のために働きます(grails 2.0.4)

于 2012-09-16T11:04:24.280 に答える
4

ブラウザにマルチパートリクエストを使用させるenctype="multipart/form-data"には、タグが必要です。g:form

于 2012-09-15T16:36:24.263 に答える
0

ファイルをアップロードするには、フォームにenctypeを設定する必要があります。これを行うには、 enctype属性を「multipart / form-data」に自動的に設定する<g:uploadForm>ことを除いて、標準のフォームタグと同じものを使用できます。

Grails Selfieプラグインを使用して、画像/ファイルアップロードプラグインを使用して、ドメインモデルにファイルを添付したり、CDNにアップロードしたり、コンテンツを検証したり、サムネイルを作成したりすることを好みます。

ドメイン

import com.bertramlabs.plugins.selfie.Attachment

class Book {
   String name
   Attachment photo

   static attachmentOptions = [
       photo: [
           styles: [
              thumb: [width: 50, height: 50, mode: 'fit'],
              medium: [width: 250, height: 250, mode: 'scale']
          ]
       ]
   ]

   static embedded = ['photo'] //required

   static constraints = {
      photo contentType: ['image/jpeg','image/png'], fileSize:1024*1024 // 1mb
   }
}

GSP

<g:uploadForm name="myUpload" controller="upload" action="updateStatus">
    <input type="file" name="myFile" />
</g:uploadForm>

コントローラ

class PhotoController {
   def upload() {
      def photo = new Photo(params)
      if(!photo.save()) {
         println "Error Saving! ${photo.errors.allErrors}"
      }
      redirect view: "index"
   }
}

ソース

1. uploadFrom

2.セルフィープラグイン

于 2016-08-31T17:56:53.393 に答える