`
hanbin51987
  • 浏览: 47161 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

文件上传(图片)

    博客分类:
  • java
阅读更多
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示例

    这个"绝对好用的上传文件上传图片vb.net示例"提供了一个基础的实现,它不仅可以处理图片上传,通过调整还能扩展到其他文件类型的上传。下面将详细讲解其中涉及的关键知识点。 1. 文件上传控件:在ASP.NET中,`...

    单文件上传图片和文本

    在Java开发中,文件上传是一项常见的任务,特别是处理用户上传的图片或文本文件。"单文件上传图片和文本"的功能通常涉及到Web应用的后端处理,这里主要涉及到Servlet、MultipartFile(Spring MVC中的接口)或者...

    ajax多文件上传图片文件带预览功能

    "Ajax多文件上传图片文件带预览功能"是实现这一需求的一种高效且用户体验良好的技术方案。通过Ajax(异步JavaScript和XML)技术,我们可以实现无刷新的文件上传,同时在用户选择文件后即时预览图片,提升交互体验。 ...

    .net 上传文件 上传图片

    在.NET框架中,上传文件是常见的Web开发任务之一,尤其涉及...总之,.NET提供了一套完整的工具和API来处理文件上传,尤其是图片上传。理解这些概念并能灵活运用,将有助于你在开发过程中实现高效且安全的文件上传功能。

    文件上传图片码 editor 解释器

    "文件上传图片码 editor 解释器"这个主题主要涉及到的是在IT行业中,特别是软件开发和文本编辑领域的一些关键概念和技术。这里的"editor"通常指的是文本编辑器,它是一种用于创建、查看和修改文本文件的软件工具,...

    多类型文件上传图片自动在客户端压缩

    多类型文件上传是指允许用户一次性上传多种格式的文件,如文档、图片、音频或视频等。为了优化用户体验和减轻服务器压力,通常需要对大文件,尤其是图片进行压缩。本方案提供了一种实现方式,即“多类型文件上传图片...

    C# asp.net 多文件上传 图片上传

    在ASP.NET中,多文件上传和图片上传是常见的功能需求,尤其在开发涉及用户交互的Web应用程序时。本文将深入探讨如何实现这个功能,主要基于C#编程语言。 首先,让我们理解多文件上传的基本概念。在传统的HTTP协议中...

    图片上传 文件上传 图片下载 文件

    在IT行业中,文件上传和下载是常见的功能需求,特别是在Web应用程序中。本示例主要涉及的是使用Java技术栈实现图片及文件的上传和下载,包括JSP(Java Server Pages)、Servlet以及J2EE(Java 2 Platform, ...

    文件上传 图片预览

    上传图片时的图片预览(html)

    commons-fileupload 文件上传 图片上传 demo

    在Java开发中,文件上传是一项常见的功能,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload 就是一个专门用于处理HTTP请求中的多部分数据(multipart/form-data),即文件...

    文件和图片上传PHP类.zip

    &lt;?...  */ class UploadFile{ ... // 缩略图最大高度图片上传在我们在项目中经常用到,几乎没有任何一个项目可以脱离图片或者是文件上传。这次给大家带来的就是一个好用的文件和图片上传PHP类

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...

    上传图片不乱码demo

    这个"上传图片不乱码demo"的压缩包文件"upload"可能包含了前端的HTML、JavaScript代码,以及后端处理文件上传的脚本。通过学习和分析这些代码,我们可以深入了解图片上传的完整流程和防止乱码的关键技巧。在实际开发...

    android 文件上传(多个或单个),图片上传

    在Android开发中,文件上传,特别是图片上传,是常见的需求之一。这涉及到用户选择本地文件,通常是图片,然后通过网络接口将这些文件发送到服务器。本文将深入探讨如何实现Android平台上的多文件和单文件上传,以及...

    c# 各种文件上传和限制文件上传以及上传图片并显示

    本教程将深入探讨C#中实现文件上传的方法、限制文件上传的策略以及如何处理图片上传并显示。 首先,我们需要了解C#中的`HttpPostedFileBase`类,这是ASP.NET MVC框架用于处理文件上传的核心类。当用户通过HTML表单...

    H5上传图片文件

    1. **多文件上传**:通过`multiple`属性可以让用户选择多个文件,通过循环处理`event.target.files`数组可以实现批量上传。 2. **进度条显示**:监听`progress`事件,可以展示文件上传进度。 3. **图片裁剪**:...

    .net上传图片文件

    在.NET框架中,开发Web应用时经常会涉及到文件上传的功能,特别是处理用户通过表单上传的图片文件。这个压缩包中的内容显然与一个特定场景相关——使用KindEditor在线编辑器进行图片上传。KindEditor是一个流行的富...

    ASP批量上传简便无刷新文件图片上传系统

    ASP批量上传技术是一种在Web应用中实现用户便捷上传文件或图片的方法,尤其适用于需要大量上传...然而,随着技术的发展,现在更常见的是使用HTML5的File API和WebSockets等技术来构建更为现代和高效的文件上传系统。

    WebUploader文件图片上传插件带进度条上传图片

    WebUploader是一款广泛应用于Web开发中的文件上传插件,尤其适合处理图片上传的需求。它提供了丰富的功能,如多文件上传、断点续传、文件预览、进度条显示等,极大地提升了用户在网页上的文件交互体验。这个插件以其...

    java图片上传、控制大小、宽度高度和图片裁剪并保存

    首先,需要在HTML表单中设置`enctype="multipart/form-data"`属性,以支持文件上传。然后,在服务器端,使用`HttpServletRequest`的`getParts()`方法获取上传的文件Part对象,再将其转换为`InputStream`进行后续处理...

Global site tag (gtag.js) - Google Analytics