使用smartupload进行文件上传

article/2025/10/14 15:12:50

     关于文件上传的代码,只有百度一下都能找到一大堆。但是可惜大多数都使用的是jsp来处理上传,而使用servlet处理文件上传的文章是比较少的。但是不管是jsp还是servlet处理都会跳转但是这样就很难看了。这就要使用到js内嵌的框架了。这样页面看起来就不会跳转了。下面就一步一步的来写下这个程序吧。

1.下载smartupload的jar包,不是jspsmartupload.这一步就大家自己弄了,我就不多说了。

2.编写文件上传的表单,enctype不能忽略,提交的方法要选择post方法

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<script type="text/javascript" language="JavaScript">   
function callback(msg)   
{   document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>"; 
}   
function f()
{var i=1;for(i=1;i<6;i++){var s=document.getElementById("pic"+i).value;if(""==s||s==null){alert("必须上传5个图片文件");return false ;}}}</script> 
<body><div id="uploadimg"><form action="CheckUpload" id="form1" name="form1" encType="multipart/form-data"  method="post" target="hidden_frame" οnsubmit="return f()">   <label>图片1</label><input type="file" id="pic1" name="pic1"/><br><label>图片2</label><input type="file" id="pic2" name="pic2"/><br><label>图片3</label><input type="file" id="pic3" name="pic3"/><br><label>图片4</label><input type="file" id="pic4" name="pic4"/><br><label>图片5</label><input type="file" id="pic5" name="pic5"/><br><font color="blue">支持JPG,JPEG,GIF,BMP,png文件的上传</font>                  <iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe> <span id="msg"></span><br> <input type="submit" value="上传"/><input type="reset" value="取消"/></form></div>
</body>
</html>


 

这里对上传的文件做了简单判断,这里就多了 <iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe> 以及target="hidden_frame",span就用来显示反馈信息。

3.编写servlet处理文件上传

在servlet可以使用下面的2句取得pagecontext

 JspFactory jspf=JspFactory.getDefaultFactory();
 PageContext context=jspf.getPageContext(this, request, response, null, true, 1024, true);

至于这5个参数大家可以去查文档

 

package servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;import org.lxh.smart.SmartUpload;public class CheckUpload extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("GBK");PrintWriter out=response.getWriter();//新建一个SmartUpload对象   SmartUpload su = new SmartUpload();   //上传初始化   JspFactory jspf=JspFactory.getDefaultFactory();PageContext context=jspf.getPageContext(this, request, response, null, true, 1024, true);su.initialize(context);   boolean sign = true;   //4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。   try {   su.setDeniedFilesList("exe,bat,jsp,htm,html");   su.upload();   //String name = su.getRequest().getParameter("uname") ;IPTimeStamp its = new IPTimeStamp() ;	// 取得客户端的IP地址java.io.File f=new java.io.File(this.getServletContext().getRealPath("/")+"images");if(!f.exists()){f.mkdirs();}for(int x=0;x<su.getFiles().getCount();x++){String ext = su.getFiles().getFile(x).getFileExt() ;	// 扩展名称String fileName = its.getIPTimeRand() + "." + ext ;su.getFiles().getFile(x).saveAs(f+java.io.File.separator + fileName) ;}//将上传文件保存到指定目录   } catch (Exception e) {  out.print("<script>parent.callback('文件类型不支持或者上传失败')</script>");sign = false;  }  if(sign==true)  {  out.print("<script>parent.callback('文件上传成功')</script>");}}}

 

下面先来看下效果截图,这里我选择了一个exe文件

下面是上传成功的截图

 

到这里文章就写好了。

http://chatgpt.dhexx.cn/article/2df3ODCR.shtml

相关文章

SmartUpload组件实现文件上传

调试好几天的程序&#xff0c;原来是软件版本的原因&#xff0c;我靠&#xff0c;能说脏话吗&#xff1f;好吧&#xff0c;当然这个过程虽然痛苦&#xff0c;但程序猿要学会享受同bug战斗的乐趣。 实现过程&#xff1a; &#xff11;、将下载好的smartupload.jar文件导入项目l…

SmartUpload使用和简介

原文地址为&#xff1a; SmartUpload使用和简介 用以下代码生成文件名即可 1 package info.haowei.util; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import java.util.Random; 6 7 public class IPTimeStamp { 8 9 10 private SimpleDat…

SmartUpload应用

首先&#xff0c;在讲SmartUpload应用前&#xff0c;我讲一个简单实用的文件编辑器&#xff08;编辑器可以调节字体大小、样式、颜色以及插入表情图标等功能&#xff09;。 文件编辑器——如图所示&#xff1a;1-1 设置文件编辑器步骤&#xff1a; 1、复制fckeditor包到项目。…

smartupload 的简单使用(上传)

今天。。。省略一万字&#xff0c;反正恨死隔壁宿舍的老王&#xff0c;妈蛋&#xff0c;把我电脑老虎机的分数都输光了。。。。天啥的。。省略一万字 最近开始学习javaweb&#xff0c;想了想&#xff0c;下载还有上传是两个必须要学会的功能&#xff0c;所以就开始学习 学习j…

SmartUpload综合

实现文件的上传与下载&#xff0c;可以使用Java的I/O流的类来实现&#xff0c;也可以使用专业的上传、下载组件。这些组件提供了现成的类&#xff0c;程序员只需调用这些类中的方法即可实现文件的上传与下载。本章将向读者介绍如何应用jspSmartUpload组件实现文件的上传与下载。…

SmartUpload文件上传

准备工作&#xff1a;在eclipse中创建网页项目&#xff0c;再添加服务器&#xff0c;双击打开服务器&#xff0c;然后导入jar包 选择路径&#xff0c;指定你想发送的路径。然后点击服务器&#xff0c;右键添加项目&#xff0c;点击start之后准备工作就完成了 操作流程 创建一个…

jsp——SmartUpload上传下载

SmartUpload 简介 SmartUpload组件是www.jspsmart.com网站开发的一套上传组件&#xff0c;它使用简单&#xff0c;方便。有以下几个特点&#xff1a; 使用简单。在JSP中仅仅书写三五行java代码就可以搞定文件的上传或下载。 能全程控制上传。利用SmartUpload组件提供的对象及其…

应用程序与驱动程序交互函数DeviceIoControl详解

这种通信方式&#xff0c;就是驱动程序和应用程序自定义一种IO控制码&#xff0c;然后调用DeviceIoControl函数&#xff0c;IO管理器会产生一个MajorFunction 为IRP_MJ_DEVICE_CONTROL&#xff08;DeviceIoControl函数会产生此IRP&#xff09;&#xff0c;MinorFunction 为自己…

QT(C++)DeviceIoControl()函数的相关使用

Microsoft官网中有这个函数的介绍&#xff0c;对&#xff0c;仅仅就是介绍&#xff0c;有时候官网的查询结果也就只能看看…… 在我写过的一个软件中&#xff0c;我曾经多次使用该函数获取相关结果&#xff0c;现将我的使用经验分享给大家&#xff01; DeviceIoControl()函数将…

应用程序与驱动程序通信 DeviceIoControl

本文为转载&#xff0c;参考链接地址 https://blog.csdn.net/li_wen01/article/details/80137566 https://www.cnblogs.com/lsh123/p/7354573.html DeviceIoControl 将控制代码直接发送到指定的设备驱动程序&#xff0c;使相应的设备执行相应的操作。 这种通信方式&#xff…

IO设备控制操作--DeviceIoControl

1.除了ReadFile和WirteFile以外&#xff0c;应用程序还可以通过另外一个API DeviceIoControl 操作设备。DeviceIoControl内部会使操作系统创建一个IRP_MJ_DEVICE_CONTROL类型的IRP&#xff0c;然后操作系统会将这个IRP转发到派遣函数中。 2.I/O控制码&#xff08;IOCTL&#xf…

DeviceIoControl获取硬盘信息

参考&#xff1a;DeviceIoControl 函数详细解析 BOOL WINAPI DeviceIoControl(_In_ HANDLE hDevice,_In_ DWORD dwIoControlCode,_In_opt_ LPVOID lpInBuffer,_In_ DWORD nInBufferSize,_Out_opt_ LPVOID lpOutBuf…

windows driver - DeviceIoControl 用法

原文地址&#xff1a;https://www.cnblogs.com/lsh123/p/7354573.html 之前写过一篇关于通过DeviceIoControl函数来使应用程序与驱动程序通信的博客&#xff0c;这次再通过这个完整的代码来简要疏通总结一下。 这种通信方式&#xff0c;就是驱动程序和应用程序自定义一种IO控制…

@ControllerAdvice 用法

ControllerAdvice 用法 顾名思义&#xff0c;ControllerAdvice就是Controller 的增强版。ControllerAdvice主要用来处理全局数据&#xff0c;一般搭配ExceptionHandler、ModelAttribute以及InitBinder使用。 全局异常处理 ControllerAdvice最常见的使用场景就是全局异常处理…

驱动开发:应用DeviceIoContro模板精讲

在笔者上一篇文章《驱动开发&#xff1a;应用DeviceIoContro开发模板》简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例&#xff0c;但是该案例过于简单也无法独立加载运行&#xff0c;本章将继续延申这个知识点&#xff0c;通过封装一套标准通用模板…

驱动开发:应用DeviceIoContro开发模板

内核中执行代码后需要将结果动态显示给应用层的用户&#xff0c;DeviceIoControl 是直接发送控制代码到指定的设备驱动程序&#xff0c;使相应的移动设备以执行相应的操作的函数&#xff0c;如下代码是一个经典的驱动开发模板框架&#xff0c;在开发经典驱动时会用到的一个通用…

deviceiocontrol(deviceiocontrol函数)

如何用DeviceIOControl读取并口信息 应用程序和驱动程序的通信过程是&#xff1a;应用程序使用CreateFile函数打开设备&#xff0c;然后用DeviceIoControl与驱动程序进行通信&#xff0c;包括读和写两种操作。还可以用ReadFile读数据用WriteFile写数据。操作完毕时用CloseHandl…

DeviceIOControl详解-各个击破

DeviceIoControl这个api我们用的不多&#xff0c;但是很重要&#xff0c;有时会帮助我们实现一些特别的需求, 如获取硬件设备信息、与硬件设备通信&#xff08;读写数据&#xff09;等&#xff0c;对照msdn&#xff0c;下面我们详细解释一下这个api的用法&#xff08;有什么错误…

DeviceIoControl 函数详细解析

前言&#xff1a; 最近需要对Windows中的设备进行编程操作&#xff0c;其中涉及到非常重要的函数DeviceIoControl&#xff0c;在使用的时候也比较的复杂&#xff0c;国内这一块中文资料比较少&#xff0c;在学习之余顺便将其翻译出来&#xff0c;以供参考&#xff0c;如有错误&…