0

Spring MVC3 を使用してデータベースにイメージを永続化する方法

コントローラ:

public String postAdd(@ModelAttribute("employeeAttribute") @Valid Employee  employee,   BindingResult result,@RequestParam("file") MultipartFile   file) throws Exception{

       byte[] bFile=null;

       System.out.println("File Name......"+file.getName());

        if (!file.isEmpty()) {

          bFile = new byte[(int) file.getSize()];
        FileInputStream fileInputStream = new FileInputStream(file.getOriginalFilename());         
             fileInputStream.read(bFile);
             fileInputStream.close();
            }


              employee.setImage(bFile);

     employeeServiceImpl.add(employee);

}

JSP ページ:

     <c:url var="saveEmp" value="/manam/mobee/employee/add"/>
       <form:form modelAttribute="employeeAttribute" method="POST" action="${saveEmp}"          enctype="multipart/form-data" >
      <form:label path="image">Image</form:label>
       <input type="file" name="file" id="file"></input>

ここでは C:\Users\Public\Pictures\Sample Pictures\Desert Landscape.jpg ファイルを送信していますが、 FileInputStream は Landscape.jpg のみを受け取ります。FileInputStream の完全なファイル パスを設定する方法を提案してください。

ここで、java.io.FileNotFoundException: Forest.jpg (指定されたファイルが見つかりません) 例外が発生します。

4

2 に答える 2

0

元のファイル名は、エンドユーザーのマシン上のファイルの名前です。SpringMVCアプリケーションはサーバーマシンで実行されます。元のファイル名を使用することはできません。エンドユーザーのマシンで絶対ファイル名を見つけたいと考えており、この名前を使用してファイルを読み取ろうとすることはさらに少なくなります。

アップロードされたファイルの内容を取得するには、MultipartFile.getBytes()またはを使用しますMultipartFile.getInputStream()

于 2012-09-26T13:00:12.433 に答える
0

MultipartFileからバイトを取得する必要があります。

 bFile = file.getBytes();
 employee.setImage(bFile);
于 2012-09-26T13:37:53.877 に答える