5

このコードは、アップロードを処理するための RestEasy コードです。

@Path("/fileupload")
public class UploadService {
    @POST
    @Path("/upload")
    @Consumes("multipart/form-data")
    public Response create(@MultipartForm FileUploadForm form) 
    {
       // Handle form
    }
}

このように処理できるSpringを使用して似たようなものはありMultipartFormますか?

4

2 に答える 2

2

Spring にはcommons-fileuploadに依存する multipartresolver が含まれているため、それを使用するにはビルドに含める必要があります。

あなたのapplicationContext.xmlで

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="<max file size>"/>
</bean>

コントローラーで、org.springframework.web.multipart.MultipartFile を使用します。

@RequestMapping(method=RequestMethod.POST, value="/multipartexample")
public String examplePost(@RequestParam("fileUpload") MultipartFile file){
    // Handle form upload and return a view
    // ...
}
于 2012-09-24T07:05:21.547 に答える
0

これは、MVCアノテーションを使用してSpringで同様のことを実現する方法を示す例です。

@RequestMapping(method=RequestMethod.POST, value="/multipartexample")
public String examplePost(@ModelAttribute("fileUpload") FileUpload fileUpload){
    // Handle form upload and return a view
    // ...
}

@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
    binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}

public class FileUpload implements Serializable {
    private MultipartFile myFile;

    public MultipartFile getMyFile() {
        return myFile;
    }

    public void setMyFile(MultipartFile myFile) {
        this.myFile = myFile;
    }
}

ファイル要素の名前が「myFile」であると仮定すると、htmlフォームからこのエンドポイントに投稿できるはずです。フォームは次のようになります。

<form:form commandName="fileUpload" id="fileUploadForm" enctype="multipart/form-data">
    <form:input type="file" path="myFile" id="myFile"/>
</form:form>

@InitBinderコードは、ファイルをバイト配列に変換するようにSpringに指示するため、重要です。バイト配列は、MultipartFileに変換できます。

于 2012-09-22T18:55:41.547 に答える