求大神指点下思路,java后台实现对首页背景图片的更换

我用二进制流写了图片上传保存到数据库,首页如何接收传递过来的参数显示图片在jsp页面

15个回答

这样太麻烦,而且效率不好。不如把图片当做普通的文件,把路径存在数据库中,查数据库查出路径,在jsp就可以显示啊。更换背景图片,其实就是更换路径。

给你给我的demo吧,我使用的bootstrap-fileinput,前台效果如图图片说明

  <div class="htmleaf-container" style="width:60%;display: none;">
        <div class="container kv-main">
            <form enctype="multipart/form-data" style="width:60%;background:#ccff99;position:absolute;top: 1%;left: 20%;z-index:1000;">
                <div class="form-group">
                    <input id="file-4" type="file" name="file" class="file" multiple class="file-loading">
                </div>
                <hr>
               <!-- <div class="form-group">
                    <button class="btn btn-warning" type="button">Disable Test</button>
                    <button class="btn btn-info" type="reset">Refresh Test</button>
                    <button class="btn btn-primary">Submit</button>
                    <button class="btn btn-default" type="reset">Reset</button>
                </div>-->
            </form>
        </div>
    </div>

    $("#file-4").fileinput({  
            uploadUrl: 'uploadBackgroundImage.htm?employeeCode=$currentUserTool.getCurrentUserName()', // you must set a valid URL here else you will get an error
            allowedFileExtensions : ['jpg', 'png','gif'],
            overwriteInitial: false,
            showCaption:false,
            showUpload: false, // hide upload button
            showRemove: false, // hide remove button
            maxFileSize: 900,
            maxFilesNum: 1,
    }).on("filebatchselected", function(event, files) {
        $("#file-4").fileinput("upload");
    }).on('filebatchuploadcomplete', function() {
         refresh();
    });
    function refresh(){
        window.location.reload();
    }


    @RequestMapping("uploadBackgroundImage")
    @ResponseBody
    public String uploadBackgroundImage(ModelMap model, @RequestParam("file") MultipartFile file, EmployeePhotoModel query) throws IOException {
        List<EmployeePhotoModel> list = null;
        try {
            list = employeePhoto.queryEmployeePhoto(query);
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        if (list.size() <= 0) {
            query.setEmployeeCode(CurrentUserUtil.getCurrentUserName());

            employeePhoto.insert(query);
        }
        byte[] bytes = file.getBytes();
        query.setBackGroundImage(bytes);
        try {
            long r = employeePhoto.updateBackGroundImage(query);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "true";
    }


    /**
     * 读取上传的图片
     * 
     * @param employeeCode
     * @param response
     * @param request
     * @param model
     * @throws ServletException
     * @throws IOException
     * @throws SQLException
     */
    @RequestMapping(value = "showUploadImage")
    public void showUploadImage(@RequestParam("employeeCode") String employeeCode, HttpServletResponse response, HttpServletRequest request,
            ModelMap model) throws ServletException, IOException, SQLException {
        if (!StringUtil.isEmpty(employeeCode)) {
            Map map = employeePhoto.getBackgroundId(employeeCode); // 获取背景图片
            if (map != null && map.size() > 0) {
                BLOB blob = (BLOB) map.get("BACKGROUNDIMAGE");
                byte[] bytes = blob.getBytes(1L, (int) blob.length());
                response.setContentType("image/jpeg, image/jpg, image/png, image/gif");
                InputStream in1 = new ByteArrayInputStream(bytes);
                IOUtils.copy(in1, response.getOutputStream());
            }
        }
        String logoRealPathDir = request.getSession().getServletContext().getRealPath("/img/background.jpg");
        InputStream is = new FileInputStream(logoRealPathDir);
        IOUtils.copy(is, response.getOutputStream());
    }

     .contain{border:1px solid white;border-radius: 8px;background:url(showUploadImage.htm?employeeCode=$currentUserTool.getCurrentUserName());background-size: cover; } //前台展示的时候直接把背景的url替换成后台的方法就行

核心代码已给出,供参考

你数据库的图片有个id,然后你后台提供一个方法(url),参数就是图片的Id,通过这个方法返回图片数据到前台就可以了。

正常来说,企业网页处理文件上传问题的思路是通过解析文件然后先将文件复制到服务器端,然后将上传的文件的路径和文件名放在一个表中,然后在需要的时候后台获取文件名及文件路径,然后通过el表达式前台写到想要放置的标签下的路径属性里就好了

将图片的路径保存在数据库的表中,然后用的时候取出来,全部取出来,然后循环便利

共15条数据 首页 2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问