4

Spring MVC 3.0Tomcat を Web サーバーとしてアプリケーションをコーディングしています。

私たちの要件は、ユーザーが画像をアップロードできるようにすることです。このイメージをディスク ファイル システムに保存し、MySQL データベースにすべてのファイル情報を BLOB として保存するのではなく、参照パスを MySQL に保存することを考えています (MySQL に保存することはベスト プラクティスではないと聞きました)。

Spring MVC でこれを行う方法を推奨できる人はいますか?

乾杯

4

1 に答える 1

13

ディスクへの保存と MySQL への保存には、注意事項があります。ここにそれについての良い議論があります。

ファイル システムに保存するには、 Commons File Uploadを使用できます。ここにサンプルがあります

pom.xml

     <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${release.version}</version>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${release.version}</version>
    </dependency>

JSP

<h2>Spring MVC file upload example</h2>

<form method="POST" action="<c:url value='/upload' />"
    enctype="multipart/form-data">


    Please select a file to upload : <input type="file" name="file" />
    <input type="submit" value="upload" />

</form>

コントローラ

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFormUpload( 
    @RequestParam("file") MultipartFile file) throws IOException{
if (!file.isEmpty()) {
 BufferedImage src = ImageIO.read(new ByteArrayInputStream(file.getBytes()));
 File destination = new File("File directory with file name") // something like C:/Users/tom/Documents/nameBasedOnSomeId.png
 ImageIO.write(src, "png", destination);
 //Save the id you have used to create the file name in the DB. You can retrieve the image in future with the ID.
 }  
}

これをアプリケーションコンテキストで定義します

 <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

これが役立つことを願っています。

于 2012-12-30T04:19:42.323 に答える