web項目從數據庫中的圖片上傳和讀取


(不建議使用,會影響項目的運行速度)

前言:

現在的web項目是都是有圖片的,而企業級的都有專門的存儲服務器,但是對於個人使用,我目前知道的就有兩種

第一種是文件數據不在數據庫,而是在項目中建立一個文件夾,文件的上傳和讀取都是在該文件夾下存取,只有文件名存儲到數據庫,這種有一個缺點,我的數據當吧生成的war包刪除以后就有無法找到上傳的文件數據了,需要重新上傳;

第二種是把圖片存儲到數據庫中,以二進制的方式存儲到數據庫,然后讀取的時候再讀取

我更偏向於第二種,具體的操作如下:

*我的是springboot項目:

數據庫的表:

 

 

 

javabean:

public class Image {
    private Integer id;

    private String imageName;

    private String imageUrl;

    private byte[] imageContent;
//get和set方法自己添加,這里只為說明要義 }

controller層:

@RequestMapping("/imageupload")
@ResponseBody
public Object searchMember(MultipartFile file){
    try {
        InputStream ins = file.getInputStream();
        byte[] buffer=new byte[1024];
        int len=0;
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        while((len=ins.read(buffer))!=-1){
            bos.write(buffer,0,len);
        }
        bos.flush();
        byte data[] = bos.toByteArray();

        Image image =new Image();
        image.setImageContent(data);
        image.setImageName("test");
        image.setImageUrl("/testimage");
        int result = imageService.insert(image);
        return "ok"+result;
/*       Student s=new Student();
       s.setId(sId);
       s.setPhoto(data);
       studentService.insertPhoto(s);*/
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return "ok";

}

    /**
     * 從數據庫到頁面顯示圖片
     * @return
     */
    @RequestMapping(value = "/showimage",produces = MediaType.IMAGE_JPEG_VALUE)
    @ResponseBody
    public byte[] toImageShow(){
//這里是從數據庫讀取圖片,你可以根據自己的業務讀取你的數據 Image image
=imageService.selectByPrimaryKey(1); return image.getImageContent(); }

上傳的頁面:

<form action="/imageupload" method="post" enctype ="multipart/form-data">
    <label for="file" class="btn btn-primary" style="float: left;height: 30px;width: 180px;margin-right: 20px">點擊選擇考生照片</label>
    <input  id="file" name="file" type="file" style="float: left;display:none"/>
    <input  class="btn btn-primary" type="submit" value="提交" style="float: left">
</form>

顯示的頁面:

<img src="/showimage" alt="失敗" />

最后感謝一下以下博客:

https://blog.csdn.net/u014449560/article/details/82807517

https://www.cnblogs.com/xiaowangxiao/p/10936537.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM