鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > java > >

我们到底能走多远系列(19)

来源:互联网 作者:佚名 时间:2013-01-13 11:40
我们到底能走多远系列(19) 扯淡: 连续加班,效率急剧下降中..... 遇到存图片的问题,解决方案很多,时间太紧,从简单方式开始学习吧。 1,把图片存到数据库里,用的时候把它取出来。取出来有有个选择是需要一个零时文件来存,用路径在页面显示,这样问题

我们到底能走多远系列(19)

扯淡: 连续加班,服务器空间,效率急剧下降中.....

 

遇到存图片的问题,解决方案很多,虚拟主机,时间太紧,从简单方式开始学习吧。

1,把图片存到数据库里,用的时候把它取出来。取出来有有个选择是需要一个零时文件来存,用路径在页面显示,这样问题比较多,不建议使用。

另一种方式就是直接把取出来的二进制文件传给页面,如下结合ibatis实现:

bean代码:

注意:license字段和identityCard字段是byte[],在数据库中我们采用clob来定义(orcale数据库)。

View Code

public class Dealer extends User { /** * serialVersionUID = -7791699407718373300L; private String contact; private String contactPhone; private String payee; private String accountNumber; private int bankType; private String bankName; private byte[] license; private byte[] identityCard; private String opinion; private Long industryId; private Long userId; private Long parentUserId; public int getBankType() { return bankType; } public void setBankType(int bankType) { this.bankType = bankType; } public byte[] getLicense() { return license; } public void setLicense(byte[] license) { this.license = license; } public byte[] getIdentityCard() { return identityCard; } public void setIdentityCard(byte[] identityCard) { this.identityCard = identityCard; } public String getContact() { return contact; } public void setContact(String contact) { this.contact = contact; } public String getContactPhone() { return contactPhone; } public void setContactPhone(String contactPhone) { this.contactPhone = contactPhone; } public String getPayee() { return payee; } public void setPayee(String payee) { this.payee = payee; } public String getAccountNumber() { return accountNumber; } public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } public String getBankName() { return bankName; } public void setBankName(String bankName) { this.bankName = bankName; } public String getOpinion() { return opinion; } public void setOpinion(String opinion) { this.opinion = opinion; } public Long getIndustryId() { return industryId; } public void setIndustryId(Long industryId) { this.industryId = industryId; } public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getParentUserId() { return parentUserId; } public void setParentUserId(Long parentUserId) { this.parentUserId = parentUserId; } }

ibatis的sqlMap文件中一个正常的插入语句:

insert into tb_Dealer (CONTACT, CONTACT_PHONE, PAYEE, ACCOUNT_NUMBER, BANK_TYPE, BANK_NAME, LICENSE, IDENTITY_CARD, OPINION,USER_ID,PARENT_USER_ID) values (#contact#, #contactPhone#, #payee#, #accountNumber#, #bankType#, #bankName#, #license#, #identityCard#, #opinion#,#userId#, #parentUserId#)

 以下是示例代码:把流写到response里即可。

public ModelAndView showLicenseImage(HttpServletRequest request, HttpServletResponse response) { User user = (User) request.getSession().getAttribute("user"); Dealer dealer = dealerService.getById(user.getId()); byte[] license = dealer.getLicense(); try { ServletOutputStream outStream = response.getOutputStream(); response.setContentType("image/*"); // 设置返回的文件类型 outStream.write(license); // 输出数据 } catch (IOException e) { e.printStackTrace(); } return null; }

 这是页面img标签的写法,注意src属性,是后台地址

 2,页面 上传图片(就是文件嘛)

利用spring mvc的框架,比较轻松就可以实现:

control层的关键代码:request转型MultipartHttpServletRequest 取出MultipartFile,代码还利用了spring的FileCopyUtils工具,实现相对路径存数据库,文件存文件夹。

网友评论
<