import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.Action;
import org.apache.struts.upload.FormFile;
import noss4.common.dao.UCompanyDaoImpl;
import noss4.common.dao.UNetrelationImpl;
import noss4.wlpz.gcsj.dao.UProjectDataImpl;
import noss4.wlpz.gcsj.form.uploadForm;
public class UploadAction extends Action {
//说明:由于项目中用的spring 前面的三个类是通过spring 注入过的
//不用理会
UProjectDataImpl uprojectdataimpl;
UCompanyDaoImpl companyimpl;
UNetrelationImpl unetrelationimpl;
/**上传方法
* 参数file FormFile文件
* 参数 dir 上传路径 参数 newName 上传后新文件名
*/
public String doFormFile(FormFile file, String dir,String newName) {
try {
//根据路径形成文件
File f = new File(dir);
//判断文件是否存在 如果不存在则创建个新的
if (!f.exists()) {
f.mkdir();
}
//输入流
InputStream in = file.getInputStream();
//写入流
FileOutputStream writer = new FileOutputStream(dir + "/"
+ newName);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
writer.write(buffer, 0, bytesRead);
}
writer.flush();
writer.close();
in.close();
file.destroy();
} catch (Exception e) {
e.printStackTrace();
}
return file.getFileName();
}
//上传Action 说明:业务逻辑我给去掉了
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//得到上传表单
uploadForm uploadImageForm = (uploadForm) form;
//得到表单的内容 可忽略不看
String nid=uploadImageForm.getNid();
String subcompid=uploadImageForm.getI_subcomp_id();
FormFile file = null;
String newname="";
//判断form表单 是否为空或是否有内容
if(uploadImageForm.getFile()!=null && !uploadImageForm.getFile().toString().equals("")) {
//如果有的话 则 得到文件
file = uploadImageForm.getFile();
//判断文件大小 可自定义
if(file.getFileSize()>(200*1024)) {
request.setAttribute("uploadInfo", "图片太大,图片不要超过200k!");
return mapping.findForward("manageimage");
}
//判断文件是否是图片 也可以判断其他格式
if(file.getContentType().equals("image/pjpeg")||file.getContentType().toLowerCase().equals("image/gif")) {
if(file.getContentType().equals("image/pjpeg"))
//下面是相关业务逻辑 可忽略 但newname 可自己跟自己需要定义
{
newname=subcompid+nid.replace("/", "")+".jpg";
}
if(file.getContentType().toLowerCase().equals("image/gif"))
{
newname=subcompid+nid.replace("/", "")+".gif";
}
//得到当前工程真实路径
String dir=request.getSession().getServletContext().getRealPath("/upload/");
//调用顶部文件上传方法
this.doFormFile(file,dir,newname);
String inserturl="upload/"+newname;
int sucess=uprojectdataimpl.inserurl(cells, inserturl);
if(sucess>0)
{
request.setAttribute("uploadInfo", "上传图片成功!");
}else
{
request.setAttribute("uploadInfo", "上传图片失败!");
}
return mapping.findForward("manageimage");
}
else {
request.setAttribute("uploadInfo", "图片格式不对,应该为 .gif||.jpg||.jpeg");
return mapping.findForward("manageimage");
}
}else {
request.setAttribute("uploadInfo", "请上传图片!");
return mapping.findForward("manageimage");
}
}
public void setUprojectdataimpl(UProjectDataImpl uprojectdataimpl) {
this.uprojectdataimpl = uprojectdataimpl;
}
public void setCompanyimpl(UCompanyDaoImpl companyimpl) {
this.companyimpl = companyimpl;
}
public void setUnetrelationimpl(UNetrelationImpl unetrelationimpl) {
this.unetrelationimpl = unetrelationimpl;
}
}
这是formbean
package noss4.wlpz.gcsj.form;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class uploadForm extends ActionForm {
public uploadForm() {
}
private FormFile file;
private String fname;
private String size;
private String i_subcomp_id;
private String nid;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getI_subcomp_id() {
return i_subcomp_id;
}
public void setI_subcomp_id(String i_subcomp_id) {
this.i_subcomp_id = i_subcomp_id;
}
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
public String getNid() {
return nid;
}
public void setNid(String nid) {
this.nid = nid;
}
}
这是Struts XML 文件配置 formbean
<form-beans>
<form-bean name="uploadform" type="noss4.wlpz.gcsj.form.uploadForm" >
<form-property name="file" type="org.apache.struts.upload.FormFile"></form-property>
<form-property name="fname" type="java.lang.String"></form-property>
<form-property name="size" type="java.lang.String"></form-property>
<form-property name="i_subcomp_id" type="java.lang.String"></form-property>
<form-property name="nid" type="java.lang.String"></form-property>
</form-bean>
</form-beans>
对了最后还有一个 跟上面的那个配置一起的 主要是把Actoin 与 formbean 绑定
name 就是要绑定formbean的名称
<action path="/gcsj/UploadAction" parameter="daili" type="noss4.wlpz.gcsj.action.UploadAction" name="uploadform">
<forward name="addpictrue" path="/noss4/wlpz/projectdata/addpictrue.jsp"></forward>
<forward name="manageimage" path="/noss4/wlpz/projectdata/manageimages.jsp"></forward>
</action>
分享到:
相关推荐
这个"绝对好用的上传文件上传图片vb.net示例"提供了一个基础的实现,它不仅可以处理图片上传,通过调整还能扩展到其他文件类型的上传。下面将详细讲解其中涉及的关键知识点。 1. 文件上传控件:在ASP.NET中,`...
在Java开发中,文件上传是一项常见的任务,特别是处理用户上传的图片或文本文件。"单文件上传图片和文本"的功能通常涉及到Web应用的后端处理,这里主要涉及到Servlet、MultipartFile(Spring MVC中的接口)或者...
"Ajax多文件上传图片文件带预览功能"是实现这一需求的一种高效且用户体验良好的技术方案。通过Ajax(异步JavaScript和XML)技术,我们可以实现无刷新的文件上传,同时在用户选择文件后即时预览图片,提升交互体验。 ...
在.NET框架中,上传文件是常见的Web开发任务之一,尤其涉及...总之,.NET提供了一套完整的工具和API来处理文件上传,尤其是图片上传。理解这些概念并能灵活运用,将有助于你在开发过程中实现高效且安全的文件上传功能。
"文件上传图片码 editor 解释器"这个主题主要涉及到的是在IT行业中,特别是软件开发和文本编辑领域的一些关键概念和技术。这里的"editor"通常指的是文本编辑器,它是一种用于创建、查看和修改文本文件的软件工具,...
多类型文件上传是指允许用户一次性上传多种格式的文件,如文档、图片、音频或视频等。为了优化用户体验和减轻服务器压力,通常需要对大文件,尤其是图片进行压缩。本方案提供了一种实现方式,即“多类型文件上传图片...
在ASP.NET中,多文件上传和图片上传是常见的功能需求,尤其在开发涉及用户交互的Web应用程序时。本文将深入探讨如何实现这个功能,主要基于C#编程语言。 首先,让我们理解多文件上传的基本概念。在传统的HTTP协议中...
在IT行业中,文件上传和下载是常见的功能需求,特别是在Web应用程序中。本示例主要涉及的是使用Java技术栈实现图片及文件的上传和下载,包括JSP(Java Server Pages)、Servlet以及J2EE(Java 2 Platform, ...
上传图片时的图片预览(html)
在Java开发中,文件上传是一项常见的功能,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload 就是一个专门用于处理HTTP请求中的多部分数据(multipart/form-data),即文件...
<?... */ class UploadFile{ ... // 缩略图最大高度图片上传在我们在项目中经常用到,几乎没有任何一个项目可以脱离图片或者是文件上传。这次给大家带来的就是一个好用的文件和图片上传PHP类
基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...
这个"上传图片不乱码demo"的压缩包文件"upload"可能包含了前端的HTML、JavaScript代码,以及后端处理文件上传的脚本。通过学习和分析这些代码,我们可以深入了解图片上传的完整流程和防止乱码的关键技巧。在实际开发...
在Android开发中,文件上传,特别是图片上传,是常见的需求之一。这涉及到用户选择本地文件,通常是图片,然后通过网络接口将这些文件发送到服务器。本文将深入探讨如何实现Android平台上的多文件和单文件上传,以及...
本教程将深入探讨C#中实现文件上传的方法、限制文件上传的策略以及如何处理图片上传并显示。 首先,我们需要了解C#中的`HttpPostedFileBase`类,这是ASP.NET MVC框架用于处理文件上传的核心类。当用户通过HTML表单...
1. **多文件上传**:通过`multiple`属性可以让用户选择多个文件,通过循环处理`event.target.files`数组可以实现批量上传。 2. **进度条显示**:监听`progress`事件,可以展示文件上传进度。 3. **图片裁剪**:...
在.NET框架中,开发Web应用时经常会涉及到文件上传的功能,特别是处理用户通过表单上传的图片文件。这个压缩包中的内容显然与一个特定场景相关——使用KindEditor在线编辑器进行图片上传。KindEditor是一个流行的富...
ASP批量上传技术是一种在Web应用中实现用户便捷上传文件或图片的方法,尤其适用于需要大量上传...然而,随着技术的发展,现在更常见的是使用HTML5的File API和WebSockets等技术来构建更为现代和高效的文件上传系统。
WebUploader是一款广泛应用于Web开发中的文件上传插件,尤其适合处理图片上传的需求。它提供了丰富的功能,如多文件上传、断点续传、文件预览、进度条显示等,极大地提升了用户在网页上的文件交互体验。这个插件以其...
首先,需要在HTML表单中设置`enctype="multipart/form-data"`属性,以支持文件上传。然后,在服务器端,使用`HttpServletRequest`的`getParts()`方法获取上传的文件Part对象,再将其转换为`InputStream`进行后续处理...