把图片上传到服务器,然后在前端页面显示查看的方法很多,作为一个入门的程序员,我把用到过的方法记录如下。
方法一,用struts 1上传图片。步骤如下:
1 创建一个ActionForm。
public class MessForm extends ActionForm
{
private FormFile photo;
public FormFile getPhoto()
{
return photo;
}
public void setPhoto(FormFile photo)
{
this.photo = photo;
}
}
其中FormFile用来存放上传的图片。
2 创建一个Action。
public class AddAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
// TODO Auto-generated method stub
MessForm mf = (MessForm) form;
FormFile photo = mf.getPhoto();
String photoPath = this.getServlet().getServletContext().getRealPath("/") + "upload\\" + photo.getFileName();//存储目录,可以在配置文件里设置,这样可以方便更改存储目录
FileOutputStream fos = new FileOutputStream(photoPath);
fos.write(photo.getFileData());
fos.flush();
fos.close();
return mapping.findForward("add");
}
}
3 写配置文件struts-config.xml。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="messForm" type="com.model.MessForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action
path="/cadd"
parameter="sc"
type="com.action.AddAction"
name="messForm">
<forward name="add" path="/science/find.jsp"/>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
这样就可以把图片上传到服务器了。
方法二,用struts 2上传图片。步骤如下:
1 创建一个Action。
public class RegisterAction extends ActionSupport
{
//封装上传文件域的属性
private File photo;
//封装上传文件类型的属性
private String photoContentType;
//封装上传文件名的属性
private String photoFileName;
//接受依赖注入的属性
private String savePath;
public File getPhoto()
{
return photo;
}
public void setPhoto(File photo)
{
this.photo = photo;
}
public String getPhotoContentType()
{
return photoContentType;
}
public void setPhotoContentType(String photoContentType)
{
this.photoContentType = photoContentType;
}
public String getPhotoFileName()
{
return photoFileName;
}
public void setPhotoFileName(String photoFileName)
{
this.photoFileName = photoFileName;
}
public String getSavePath()
{
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath)
{
this.savePath = savePath;
}
@Override
public String execute() throws Exception
{
// TODO Auto-generated method stub
//以服务器的文件保存地址和原文件名建立上传文件输出流
FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getPhotoFileName());
//以上传文件建立一个文件上传流
FileInputStream fis = new FileInputStream(getPhoto());
//将上传文件的内容写入到服务器
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) > 0)
{
fos.write(buffer, 0, len);
}
return SUCCESS;
}
}
2 写配置文件struts.xml。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
<package name="mypackage" extends="struts-default">
<action name="register" class="org.chh.controller.RegisterAction">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/png/,image/gif,image/jpeg,image/jpg</param>
<param name="maximumSize">10240</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<param name="savePath">/upload</param>
<result name="success">information.jsp</result>
<result name="input">register.jsp</result>
</action>
</package>
</struts>
这样就可以把图片上传到服务器了。
上面两种方法只是把图片上传到服务器的某个目录,并没有把图片保存到数据库中,这种做法有个缺陷,就是两张图片名字相同的时候,最后上传的图片会把之前的图片覆盖掉。我们可以通过产生一个大的不重复的随机数,然后把这个随机数连接在图片名字的后面,来确保图片名字唯一。或者通过java.util.UUID类产生一个UUID连接在图片名字后面也行。当然,最好的做法是把图片存入数据库了。
图片上传到服务器后,就可以在客户端显示了,一个简单的jsp代码如下:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"upload/相片名";
%>
<img src="<%=basePath %>width="129" height="150"/>
分享到:
相关推荐
首先,备忘录应用的核心功能之一是提供提醒服务。这种功能基于时间管理理论,通过设定特定时间点或时间段的提醒,确保用户不会错过任何关键事件。例如,在Notepadv4这样的备忘录应用中,用户可以为每个待办事项设置...
综上所述,通过在VC++中开发ActiveX控件,开发者可以充分利用OCX技术的优势,构建功能强大且安全的组件,用于增强Web页面或桌面应用程序的交互性和功能性。掌握OCX控件的开发和注册技巧,对于从事Windows平台软件...
综上所述,"ASP.Net在线电话备忘录"项目涉及到ASP.Net框架的核心技术和Web开发的最佳实践,是一个集数据存储、用户交互和安全性于一体的实用工具。通过深入学习和理解这些技术,开发者可以构建出更加复杂和功能丰富...
首先,CSS3是现代Web设计的核心技术之一,它提供了许多强大的样式和动画功能,比如选择器增强、盒模型改进、边框和背景的更多选项、以及过渡(transition)、动画(animation)等。在这个备忘录列表特效中,CSS3被...
基于web的大学生个人财务管理系统 本web系统,设计之初就是为了兼容手机和电脑的,所以系统设计成响应式的页面,在手机和web端都可以完美的展示出来。 此外,系统的开发,兼顾了普通使用者和管理员,所以系统分为了...
它们最初是为Kickstart Coding设计的,Kickstart Coding是负担得起的,包容性的,密集的编码课程,用于在加利福尼亚州奥克兰市进行尖端的Python / Django和JavaScript / React Web开发。 下载单击以下之一下载。 ...
本web系统,设计之初就是为了兼容手机和电脑的,所以系统设计成响应式的页面,在手机和web端都可以完美的展示出来。 此外,系统的开发,兼顾了普通使用者和管理员,所以系统分为了两部分,分别是:前台部分,以及...
- **书名**:《Ajax之道—Web 2.0时代Ajax开发实战》 - **出版社**:电子工业出版社 - **简介**:本书不仅介绍了Ajax的基础知识,还探讨了其在Web 2.0中的应用。 - **网址**:...
XSS攻击是Web应用中最常见的威胁之一,但通过合理的输入验证、数据转义、安全配置以及持续的安全测试,我们可以大大降低这种风险。对于开发人员来说,理解XSS的工作原理及其防护策略至关重要。此外,随着新的攻击...
在IT行业中,JavaScript是一种至关重要的编程语言...总之,这个“备忘录”项目是学习和实践JavaScript交互式Web开发的一个良好实例,涵盖了数据管理、UI交互和用户体验等多个方面,对于提升JavaScript技能非常有帮助。
"Atom-cheatsheets.zip" 文件集合了关于Atom的各种工具和编辑器的备忘单及配置信息,这对于提高开发效率和深入理解Atom的使用技巧十分有帮助。 在 Atom 中,用户可以通过安装社区提供的数千个插件来扩展编辑器的...
Django 是一个高级的 Python Web 开发框架,它遵循“DRY(Don't Repeat Yourself)”原则,强调代码复用,让开发者能快速高效地构建功能丰富的 web 应用程序。Django 提供了模型-视图-控制器(MVC)的设计模式,其...
综上所述,本文介绍的Cookie操作技巧是Web开发中的基础技能之一,对于那些希望通过Web应用为用户提供便捷服务的开发者来说,掌握这些技能是必要的。而JavaScript的其他知识点,则为开发复杂的Web应用提供了更多的...
总的来说,"memo-front: RON前锋-备忘"项目展示了现代Web开发的最佳实践,结合了ReactJS的组件化能力、CSS的样式控制、React Router的导航功能,以及可能的Evergreen框架或工具带来的持续更新和优化。对于希望提升...
因此,我们开发了一个WEB应用程序,可让您直接在视频上写笔记!此外,共享功能使老师和学生可以通过备忘录相互交流! 产品描述 MemoTube是一个Web应用程序,可让您直接在视频上写笔记。 供个人使用 您可以指定要在其...
JavaScript是互联网上最广泛使用的编程语言之一,也是构建Web应用和服务的首选语言。在CrystalPlate项目中,JavaScript不仅用于前端用户界面的开发,使用户能够方便地创建、编辑和查看备忘录,还可能被用于后端...