当前位置:文档之家› SpringMVC使用MultipartFile文件上传配置,多文件上传

SpringMVC使用MultipartFile文件上传配置,多文件上传

SpringMVC使用MultipartFile文件上传配置,多文件上传
SpringMVC使用MultipartFile文件上传配置,多文件上传

SpringMVC使用MultipartFile文件上传配置,多文件上传,

.

基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使

用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤

一、配置文件:

SpringMVC 用的是的MultipartFile来进行文件上传所以我们首先要配置MultipartResolver:用于处理表单中的file

1.

2.

3.p:defaultEncoding="UTF-8"

4.p:maxUploadSize="5400000"

5.p:uploadTempDir="fileUpload/temp"

6.>

7.

其中属性详解:

defaultEncoding="UTF-8"是请求的编码格式,默认为iso-8859-1

maxUploadSize="5400000"是上传文件的大小,单位为字节

uploadTempDir="fileUpload/temp"为上传文件的临时路径

二、创建一个简单的上传表单:

1.

2.

文件上传实例

3.

4.

5.

6.选择文件:

7.

8.

9.

10.

11.

注意要在form标签中加上enctype="multipart/form-data"表示该表单是要处理文件的,这是最基本的东西,很多人会忘记然而当上传出错后则去找程序的错误,却忘了这一点

三、编写上传控制类

1、创建一个控制类: FileUploadController和一个返回结果的页面list.jsp

2、编写提交表单的action:

1.//通过Spring的autowired注解获取spring默认配置的request

2.@Autowired

3.private HttpServletRequest request;

4.

5./***

6. * 上传文件用@RequestParam注解来指定表单上的file为MultipartFile

7. *

8. * @param file

9. * @return

10. */

11.@RequestMapping("fileUpload")

12.public String fileUpload(@RequestParam("file") MultipartFile file) {

13.// 判断文件是否为空

14.if (!file.isEmpty()) {

15.try {

16.// 文件保存路径

17. String filePath = request.getSession().getServletContext().g

etRealPath("/") + "upload/"

18. + file.getOriginalFilename();

19.// 转存文件

20. file.transferTo(new File(filePath));

21. } catch (Exception e) {

22. e.printStackTrace();

23. }

24. }

25.// 重定向

26.return"redirect:/list.html";

27. }

28.

29./***

30. * 读取上传文件中得所有文件并返回

31. *

32. * @return

33. */

34.@RequestMapping("list")

35.public ModelAndView list() {

36. String filePath = request.getSession().getServletContext().getRealPa

th("/") + "upload/";

37. ModelAndView mav = new ModelAndView("list");

38. File uploadDest = new File(filePath);

39. String[] fileNames = uploadDest.list();

40.for (int i = 0; i < fileNames.length; i++) {

41.//打印出文件名

42. System.out.println(fileNames[i]);

43. }

44.return mav;

45. }

3、使用SpringMVC注解RequestParam来指定表单中的file参数;

4、指定一个用于保存文件的web项目路径

5、通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。

到此基本的文件上传就结束了。

MultipartFile类常用的一些方法:

String getContentType()//获取文件MIME类型

InputStream getInputStream()//后去文件流

String getName() //获取表单中文件组件的名字

String getOriginalFilename() //获取上传文件的原名

long getSize() //获取文件的字节大小,单位byte

boolean isEmpty() //是否为空

void transferTo(File dest) //保存到一个目标文件中。

四、多文件上传。

多文件上传其实很简单,和上传其他相同的参数如checkbox一样,表单中使用相同的名称,

然后action中将MultipartFile参数类定义为数组就可以。

接下来实现:

1、创建一个上传多文件的表单:

[html]view plain copy

print?

1.

2.

上传多个文件实例

3.

4.

5.

6.enctype="multipart/form-data">

7.

8.选择文件:

9.

10.选择文件:

11.

12.选择文件:

13.

14.

15.

16.

2、编写处理表单的action,将原来保存文件的方法单独写一个方法出来方便共用:

1./***

2. * 保存文件

3. * @param file

4. * @return

5. */

6.private boolean saveFile(MultipartFile file) {

7.// 判断文件是否为空

8.if (!file.isEmpty()) {

9.try {

10.// 文件保存路径

11. String filePath = request.getSession().getServletContext().g

etRealPath("/") + "upload/"

12. + file.getOriginalFilename();

13.// 转存文件

14. file.transferTo(new File(filePath));

15.return true;

16. } catch (Exception e) {

17. e.printStackTrace();

18. }

19. }

20.return false;

21. }

22.3、编写action:

23.@RequestMapping("filesUpload")

24.public String filesUpload(@RequestParam("files") MultipartFile[] files)

{

25.//判断file数组不能为空并且长度大于0

26.if(files!=null&&files.length>0){

27.//循环获取file数组中得文件

28.for(int i = 0;i

29. MultipartFile file = files[i];

30.//保存文件

31. saveFile(file);

32. }

33. }

34.// 重定向

35.return"redirect:/list.html";

36. }

最后运行项目上传文件:

.

关于单文档多视与MFC的初始化过程

单文档多视的实现 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。2)通过一个文档关联多个视图,窗口显示整个视图。第二种实现较第一种复杂,这里给出详细的实现方法。 Step 1:使用VC 6.0新建一个Project,命名为:MultiView。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainFrame,CMultiViewApp,CMultiViewDoc,CMultiViewView,和CAboutDlg; Step 2:新建一个新的视图View,添加一个新的MFC Class(Insert->New Class),基类为CView(或者CView的派生子类,如CEditView等)。类的名字为CAnotherView,这就是新的视图;并为CAnotherView添加GetDocument 个子菜单“视图一”和“视图二”,添加相应函数: (void CMultiViewApp::OnShowFirstview()和 void CMultiViewApp::OnShowSecondview()); 注意这里将菜单消息的响应都放在app对象里面,而不是放到MainFrame对象中进行。 Step 4:创建新的视图:在BOOL CMultiViewApp::InitInstance()中添加

Step 5:现在已经创建了视图,并且都和文档关联起来了。现在要作的就是视图间的转换。在void CMultiViewApp::OnShowFirstview()中添加实现代

第三章 单文档应用程序

第三章单文档应用程序 在本学习情境中主要学习: (1)单文档应用框架 (2)文档与视图 3.1 MFC消息处理 3.1.1事件驱动程序设计 事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。它的框图如图1所示: 图1事件驱动程序模型 3.1.2 MFC的消息处理 在DOS应用程序下,可以通过getchar()、getch()等函数直接等待键盘输入,并直接向屏幕输出。而在Windows下,由于允许多个任务同时运行,应用程序的输入输出是由Windows 来统一管理的。 Windows操作系统包括三个内核基本元件:GDI, KERNEL ,USER。其中GDI(图形设备接口)负责在屏幕上绘制像素、打印硬拷贝输出,绘制用户界面包括窗口、菜单、对话框等。系统内核KERNEL支持与操作系统密切相关的功能:如进程加载,文本切换、文件I/O,以及内存管理、线程管理等。USER为所有的用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列。消息队列是一个系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程。每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。框图2如下:

jsp中实现一个页面纯io流上传文件

jsp中实现一个页面纯io流上传文件 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@page import="java.io.*"%> <%@page import="java.sql.*"%> My JSP 'Xs.jsp' starting page <%! //此方法用于将指定的文本转换成ISO-8859-1字符编码格式 public String codeToString(String str) { String s = str; try { byte tempB[] = s.getBytes("ISO-8859-1"); s = new String(tempB); return s; } catch (Exception e) { return s; } } %> <% //声明一个临时文件名 String tempFileName = new String("tempFileName1"); //在D盘建立一个临时文件,名为tempFileName File tempFile1 = new File("D:/", tempFileName); //根据指定的这个临时文件,来创建一个文件字节输出流(用于向磁盘写文件) FileOutputStream outputFile1 = new FileOutputStream(tempFile1); //由返回一个文件字节输入流(用于读文件) InputStream fileSource1 = request.getInputStream(); //实例一个字节数组初始为1000kb byte b[] = new byte[1000]; int n; //利用while循环,先读出这个文件大小,判断为不为-1,如果不为-1就输出数据,向磁盘写文件数据 while ((n = fileSource1.read(b)) != -1) { outputFile1.write(b, 0, n); //将 n 个字节从b字节数组写入到outputFile1文件,偏移量从0开始 } //关闭文件输出流 outputFile1.close(); //关闭文件输入流 fileSource1.close(); //实例化一个RandomAccessFile 对象.创建从中读取和向其中写入(可选)的随机存取文件流,该文件由 File 参数指定。 //将创建一个新的 FileDescriptor 对象来表示此文件的连接。 //mode 参数指定用以打开文件的访问模式。允许的值及其含意为:

vc 6.0打造单文档界面与多文档界面的编程

vc++6.0打造单文档界面与多文档界面的编程 VC++6中,可以利用MFC向导分别创建单文档和多文档界面的应用程序。有了这两种类型的应用程序,您就可以实现简单的记事本,写字本和WORD的功能了。 以下介绍一个在文档中输出一段文字,点击菜单项,输入文字内容按OK按钮后可以更改输出的文字。 1.首先,点击MFC向导,选择多文档视图类型,新建一个名为MdiDemo的工程。 2.新建一个对话框。上面放置一个Static控件和一个Edit控件,按CTRL+W,将Edit控件改成m_Caption. 3.新建一个类与对话框对应,如CDlgDemo类。 4.在菜单中,增加一项Demo,并增加菜单项Test.按 CTRL+W,并双击后,在消息的上面选择Doc,下面选择Command,双击就产生了对应的事件处理函数。 5.在MdiDemoDoc.cpp类中输入以下: // DlgDemo.cpp : implementation file // #include "stdafx.h" #include "MdiDemo.h" #include "DlgDemo.h" #ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgDemo dialog CDlgDemo::CDlgDemo(CWnd* pParent /*=NULL*/) : CDialog(CDlgDemo::IDD, pParent) { //{{AFX_DATA_INIT(CDlgDemo) m_Caption = _T(""); //}}AFX_DATA_INIT } void CDlgDemo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgDemo) DDX_Text(pDX, IDC_EDIT1, m_Caption); //}}AFX_DATA_MAP }

jsp实现文件上传和下载(代码及说明)

特点: 1.可以多文件上传; 2.返回上传后的文件名; 3.form表单中的其他参数也可以得到。先贴上传类,JspFileUpload package com.vogoal.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Hashtable; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; /* * vogoalAPI 1.0 * Auther SinNeR@https://www.doczj.com/doc/042402028.html, * by https://www.doczj.com/doc/042402028.html, * mail: vogoals@hotm https://www.doczj.com/doc/042402028.html, */ /** * JSP上传文件类 * * @author SinNeR * @version 1.0 */ public class JspFileUpload { /** request对象*/

private HttpServletRequest request = null; /** 上传文件的路径*/ private String uploadPath = null; /** 每次读取得字节的大小*/ private static int BUFSIZE = 1024 * 8; /** 存储参数的Hashtable */ private Hashtable paramHt = new Hasptable(); /** 存储上传的文件的文件名的ArrayList */ private ArrayList updFileArr = new ArrayList(); /** * 设定request对象。 * * @param request * HttpServletRequest request对象 */ public void setRequest(HttpServletRequest request) { this.request = request; } /** * 设定文件上传路径。 * * @param path * 用户指定的文件的上传路径。 */ public void setUploadPath(String path) { this.uploadPath = path; } /** * 文件上传处理主程序。 �������B * * @return int 操作结果0 文件操作成功;1 request对象不存在。2 没有设定文件保存路径或者

单文档和多文档窗口使用方法解析

单文档和多文档窗口使用方法解析 一.实验目的 掌握利用开发平台创建单文档和多文档窗口方法 掌握在窗口中输出文字、图形的方法及 MFC 中相关类的使用 二.实验要求 1 创建一个单文档窗口,在文档类定义一个整型变量,其取值范围从 0 ~ 1000 循环,在视图的中间显示该数字,当用户点击窗口的不同区域时,变量值按不同的增量增加并显示。 提示:在修改数据后,使用 Invalidate() 函数引起 MFC 对 OnDraw() 的调用,这样就可以用修改后的数据进行画图了。关于对文档类的访问,见本实验的技术支持。 2 创建一个单文档窗口,鼠标在窗口上单击后在鼠标的位置显示一正方形,点击 20 次后清窗口,新的点击将不再增加新的正方形,而是将已输入的正方形在原位置显示,当然,在每20 单击后要重新清窗口。(要求用 MFC 的通用类保存单击的信息,如 CList 类) 知识点:画线 当单击鼠标左键时,就可以获得一个点,即线条的起点。接着按住鼠标左键并拖动一段距离后松开鼠标,此时也可以获得一个点,即线条的终点。也就是说,我们需要捕获两个消息,一个是鼠标左键按下消息(WM_LBUTTONDOWN),在该消息响应函数中可以获得将要绘制的线条的起点;另一个是鼠标左键弹起来的消息(WM_LBUTTONUP),在该消息响应函数中可以获得将要绘制的线条的终点。有了这两个点就可以绘制出一条线。 利用SDK全局函数实现画线功能 为了进行绘图操作,必须获得一个设备描述表(DC),因此,首先定义一个HDC类型的变量:hdc,接着调用全局函数GetDC获得当前窗口的设备描述表。因为CWnd类有一个成员变量(m_hWnd),而CView类派生于CWnd类,因此该类也有这样的一个成员变用于保存窗口句柄,而GetDC函数可以直接把这个成员变量作为参数来使用。 利用MFC的CDC类实现画线功能 该类提供一个数据成员m_hDC类用来保存与CDC相关的DC句柄。其道理与CWnd 类提供成员变量m_hWnd保存与窗口相关的窗口句柄是一样的。 CDC* pDC = GetDC(); pDC->MoveTo(m_ptOriginal); pDC->LineTo(point); ReleaseDC(pDC);

jsp 图片上传功能实现原创

package com.lsl.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * * @author Administrator * 图像处理类 */ public class PicCompression { /** * 压缩图片方法 * * @param oldFile * 将要压缩的图片的绝对地址 * @param width * 压缩宽 * @param height * 压缩长 * @param quality * 压缩清晰度建议为1.0 * @param smallIcon * 压缩图片后,添加的扩展名 * @return */ public String zoom(String oldFile, int width, int height, float quality) { if (oldFile == null) { return null; } String newImage = null; try { File file = new File(oldFile);

SDI(单文档界面)

英文全称Single Document Interface 如果使用过基于 Windows 的应用程序,也许已经注意到不是所有用户界面看上去或操作起来都一样。用户界面样式主要有两种:单文档界面(SDI) 和多文档界面(MDI)。SDI 界面的一个示例就是Microsoft Windows 中的WordPad(记事本)应用程序(图 6.1)。在WordPad 中,只能打开一个文档,想要打开另一个文档时,必须先关上已打开的文档。 图记事本,一个单文档界面(SDI) 应用程序 象Microsoft Excel 和 Microsoft Word for Windows 这样的应用程序就是MDI 界面;它们允许同时显示多个文档,每一个文档都显示在自己的窗口中(图 6.2)。按照是否包含有能在窗口或文档之间进行切换的子菜单的Windows 菜单项,就能识别出 MDI 应用程序。 图Microsoft Excel,一个多文档界面 (MDI) 应用程序 要决定哪种界面样式最好,需要看应用程序的目的。一个处理保险索赔的应用程序可能要用多文档界面MDI 样式,一个职员很可能会同时处理一个以上索赔,或者需要对两个索赔进行比较。另一方面,日历程序最好设成SDI(单文档界面)样式,因为不大需要同时打开一个以上日历;在极少的情况下,可以再打开一个单文档界面应用程序的实例。 SDI 样式更常用,《程序员指南》中的大多数实例都采用SDI 应用程序。关于创建 MDI 应用程序有一些需要单独考虑的问题和技巧,放在本章后面“多文档界面 (MDI) 应用程序”一节。

除了以上两个最常用的界面样式SDI 与MDI 外,第三种界面样式变得越来越流行,这就是资源管理器样式的界面(图 6.3)。资源管理器样式界面是包括有两个窗格或者区域的一个单独的窗口,通常是由左半部分的一个树型的或者层次型的视图和右半部分的一个显示区所组成,如在Microsoft Windows 的资源管理器中所见到的那样。这种样式的界面可用于定位或浏览大量的文档、图片或文件。 图Windows 的资源管理器,资源管理器样式的界面 除了本章所附的 MDI 与SDI 应用程序示例,实用程序向导还提供了一种比较界面样式差别的方法。可以用向导来为每一种样式生成一个框架,然后观察它生成的窗体与代码。 此外,在AUTO CAD绘图程序中,有SDI 口令,通过该口令可以设置CAD程序是当文档显示或多文档显示。SDI有0、1两个值。当设置为0时,为单文档显示;设置为1时为多文档显示,即每次打开一个图形文件,都会启动一次CAD程序。

VC++多文档编程

教案 2007 ~2008 学年第一学期 主讲教师 课程名称面向对象程序设计(VC++)课程类别专业基础课 学时及学分80、4 授课班级 使用教材 VC++的使用及面向对象软件工程实例分析 系(院、部) 教研室(实验室) 计算机应用教研室

课时授课计划 课次序号: 一、课题:ch6 多文档编程 二、课型:讲授 三、目的要求: 1、理解多文档程序的结构,熟悉多文档窗口的特点。 2、掌握多文档程序的设计方法。 3、熟悉视图分割的方法和应用。 四、重点、难点: 重点:多文档程序的结构和设计方法。 难点:多文档程序中视图与文档的交互作用较难理解。 五、教学方法及手段: 案例式教学:设计目标、关键技术、结合实例讲解语法、总结。 六、参考资料: 《面向对象程序设计与VC++实践》揣锦华编著,西安电子科技大学出版社,第11章 《C++面向对象程序设计》李涛编著,高等教育出版社,第9章 七、作业: 习题6.2 6.3 6.4 6.6 八、授课记录: 九、授课效果分析:

十、教学进程(教学内容、教学环节及时间分配等) 1、复习 多文档程序的框架结构:5个主要的类比如, 创建多文档程序ex_mdi,包含的主要类有:CmainFrame Cex_mdiView Cex_mdiDoc Cex_mdiApp CchildFrame 与单文档程序相比,多了一个子窗口类类CchildFrame 2、导入课题 多文档程序可以运行用户同时打开和使用多个文档,比单文档程序更方便,比如Word、Excel等。 3、教学内容 ch6.1 多文档程序的结构和多文档窗口特点 [通过实例分析] 例6-1:建立一个多文档应用程序,用户能打开多个文档,并能在多个文档中输入信息,并可以利用“保存/另存为”保存每个文档中输入的信息,也可以利用“打开”新建的子窗口显示文件的内容。 关键技术: 利用视图类的ONCHAR消息映射函数OnChar实现键盘输入; 利用文档的串行化实现数据的保存、文件的打开。 实现过程: (1)建立单文档应用程序ex_mdi (2)为文档类Cex_mdiDoc添加一个字符串变量,用于保存输入的字符串。 CString m_strText; (3)在文档类Cex_mdiDoc的构造函数中初始化字符串变量。 m_strText.Empty(); //初始化字符串为空 (4)处理键盘输入:为视图类添加WM_CHAR消息映射函数OnChar(),在函数 中添加“取得输入字符”代码: pDoc->m_strText+=nChar; Invalidate(); //强迫调用OnDraw()函数,更新视图 [运行:从键盘输入,但看不见输入的信息] (5)在视图中显示输入的内容:在视图类的OnDraw()中添加输出代码。 pDC->TextOut(0,10,pDoc->m_strText);

JSP中上传图片 完整代码

upfile.jsp

uploadimage.jsp uploadimage.jsp
 <%@ page language="java" pageEncoding="gb2312"%> <%@ page import="java.io.*,java.awt.image.*,com.sun.image.codec.jpeg.*,jav a.sql.*,com.jspsmart.upload.*,java.util.*"%> <%@ page import="mainClass.*"%>   My JSP'uploadimage.jsp' starting page   <% S martUpload sma = new SmartUpload(); l ong file_max_size = 4000000; S tring filename1 = "", ext = "", testvar = ""; S tring url = "uploadfiles/"; s ma.initialize(pageContext); t ry { sma.setAllowedFilesList("jpg,gif"); sma.upload(); }catch (Exception e) { %>

JSP文件上传-二进制流详解

JSP文件上传 一、先做选择上传文件页面chose.jsp,比较简单。 代码如下: 关键代码是:

选择文件后的上传由upfile.jsp网页来处理;整个表单内容以post方式传递;表单中包含的所有内容,包括文件都会以enctype="multipart/form-data"二进制形式传给服务器。 注意JSP网页里不同的编码形式声明: charset=gb2312表示网页中包含的内容(比如文件)以简体中文编码; pageEncoding="UTF-8"表示JSP网页源代码本身是UTF-8编码。 因为表单form的内容会以二进制形式传到服务器,就必须用

charset=gb2312指定这个二进制是以中文简体来编码的,这样传上去以后真正处理上传和存储的upfile.jsp页才能看懂识别中文文件名! 选择文件页面比较简单,关键是编码的申明,必须说清楚,不然到时候中文文件名就会乱码。 二、upfile.jsp页用来接收和处理以二进制形式传给服务器的数据流。 1、二进制数据流的基本信息。 还是用request对象帮我们取从客户端传过来的各种信息,先取二进制数据流的整体长度,就是传过来文件的大小了,单位是字节。 int formDataLength = request.getContentLength(); 我们可以设置能接收的最大文件大小,比如下面,就是10M。 int MAX_SIZE = 10*1024*1024; 再取传过来的二进制数据流类型,不知道里面是什么鬼? String contentType = request.getContentType(); 不要紧,我们打出来看看就知道了,out.print编程时非常有用,随时打出来瞅瞅。 out.print(contentType);会看到下面这个: 主要就是要后面的这个东西 一个表单form可能选了多个文件,全部在一个二进制数据流里面一起传过来,那么文件数据之间都用这个间隔boundary隔开的。通过它才可以在二进制数据流中找到一个文件的开始和结束位置,从而将文件数据正确取出并保存到服务器里。 一个字节的位置错误都会造成文件保存出错!所以文件保存的最关键就是要找准位置,错一个字节都不行。

JSP文件上传

UploadExample.jsp <%@ page contentType="text/html;charset=gb2312"%> <%= application.getServerInfo() %> 上传文件程序应用示例 <%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。--%> 请选择要上传的文件

doUpload.jsp

<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <%@ page import="javax.servlet.*"%> <%@ page import="javax.servlet.http.*"%> upFile <% //定义上载文件的最大字节 int MAX_SIZE = 102400 * 102400; // 创建根路径的保存变量 String rootPath; //声明文件读入类 DataInputStream in = null; FileOutputStream fileOut = null; //取得客户端的网络地址 String remoteAddr = request.getRemoteAddr(); //获得服务器的名字 String serverName = request.getServerName();

jsp多文件上传到数据库

数据库的创建: 数据库名叫:csdn 表名:savepicture DROP TABLE IF EXISTS `savepicture`; CREA TE TABLE `savepicture` ( `id` int(10) NOT NULL auto_increment, `picture` blob NOT NULL, PRIMARY KEY(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 好动手创建工程啦: 其实非常简单,一看就明白。把需要的包该导的都导了就行了。接着我们创建上传页面: <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%>

File Upload

上传图片
图片路径:
很简单,就是个上传框和按钮,别的没有了。至于一些css就是稍微的装饰装饰,一会也在下面写上!

jsp实现word文档的上传在线预览下载

JSP实现word文档的上传,在线预览,下载 前两天帮同学实现在线预览word文档中的内容,而且 需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了。希望得到各位大神的指教。下面我就具体谈谈自己的实现过程,总结一下学习中的收获。 我相信很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览。Word文档甚至始终都会通过本地的Office软件打开。那么,问题来了,如何可以在线浏览word文档呢? 其实,我在最初的时候也没有接触过这方面的东西,一般用的比较多的是生成pdf文档,而浏览器一般都支持pdf 的浏览,因此,直接通过后台传来的数据,再利用java和一些相关的jar包就可以生产一个pdf文档,在浏览器中可以 直接显示。尽管可以这样,但是我们需要的是解决实际问题啊?在浏览器中打开word文档。 在网上查了一些资料,也都没有查出个所以然。看了好几个博客和论坛,也都是大同小异,测试了好几个,基本都是浏览器提示直接下载,或者打开,这里的打开也都是利用本地的Office软件打开的,所以这并不是自己想要的结果。

于是,自己动手,既然浏览器不支持显示word文档,我何不将word文档按照原来word的样式和内容转为html呢?而在浏览器中,html是再熟悉不过了。基本思路就是这样,首先是利用上传的word文档转为html文件,然后生成的链接显示在jsp页面上,如果点击显示该word文档,那么实际上浏览器读取的是刚生成的html文件。 下面将自己的实现过程总结如下,欢迎各位朋友提供更好的解决办法。转载本文请在文章明显位置标明文章的原始出处,个人博客:https://www.doczj.com/doc/042402028.html, 邮箱: it_red@https://www.doczj.com/doc/042402028.html, 1. Word文档转为html 这里采用第三方组件jacob来实现的,本demo所用的版本为jacob-1.18-M2;下载链接为: http://sourceforge.jp/projects/sfnet_jacob-project/releases/ 先在这里说一下,用这个组件还是比较麻烦的,首先要根据自己的电脑实际情况将压缩包里面的动态链接库 放到多个目录下,而这个动态链接库为: 将其复制的位置分别是: C:\Windows\System32 机器所安装的java目录下的jdk下的bin中

单文档多视图

相信这就是vc的弊病吧!项目作了很久发现应该用多视图,可是刚开始建立工程的时 候考虑不周阿,没办法,只能从网上搜了,竟搜到了一个不错的函数可以解决这个问题:void CMainFrame::SwitchToView(int nForm) { //CDocument* pDoc = GetActiveDocument(); CView *pOldActiveView=GetActiveView(); //保存旧视图 CView *pNewActiveView=(CView*)GetDlgItem(nForm); //取得新视图 if(pNewActiveView==NULL) { switch(nForm) //这些ID是对话框的标志符,但也可以用其他的标志 { case IDD_PLANT_VIEW : pNewActiveView=(CView*)new CPlantView; break; case IDD_HSUB_VIEW : pNewActiveView=(CView*)new CHSubView; break; } CCreateContext context; //将文挡和视图相连 context.m_pCurrentDoc=pOldActiveView->GetDocument(); pNewActiveView->Create(NULL,NULL,WS_BORDER|WS_CHILD,CFrameWnd::rectDefault,this,nForm, &context); pNewActiveView->OnInitialUpdate(); } SetActiveView(pNewActiveView); //改变活动的视图 pNewActiveView->ShowWindow(SW_SHOWMAXIMIZED); //显示新的视图 pOldActiveView->ShowWindow(SW_HIDE); //隐藏旧的视图 pNewActiveView->GetDocument()-SetTitle(\"。。。。\"); if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CHSubView)) pOldActiveView->SetDlgCtrlID(IDD_HSUB_VIEW); else if(pOldActiveView-GetRuntimeClass() ==RUNTIME_CLASS(CPlantView)) pOldActiveView-SetDlgCtrlID(IDD_PLANT_VIEW); pNewActiveView-SetDlgCtrlID(AFX_IDW_PANE_FIRST); delete pOldActiveView; //删除旧视图 RecalcLayout(); //调整框架窗口 }; 这个函数很好用大家可以参考一下。其中IDD_HSUB_VIEW 等都是新建立的FormView,也就是继承了CFormView类的新类。注意将各个新类中的构造函数改成public,才能用此函数不出错。 由于最近做的一个程序用到了单文档多视图切换,所以把它总结一下。内容如下:

MFC多文档和单文档视结构

MFC多文档和单文档视结构 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //这一页的代码最重要了,呵呵……什么都在这里面呢; 单文档新建: CWinApp_________docManager->docSingleTemplate 的OpenDocumentFile函数参数为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 多文档新建: CWinApp_________docManager->docMultTemplate的OpenDocumentFile函数参数为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 单文档打开:CWinApp_________docManager中经过一个

打开对话框传递参数,中途还调用了APP的OpenDocumentFile,当然如果我们的APP重载了这个函数也要调用我们的但是我们的函数一定别忘记最后返回是调 用父类的此函数___________docSingleTemplate的OpenDocumentFile函数参数不为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 多文档打开:CWinApp_________docManager中经过一个 打开对话框传递参数,中途还调用了APP的OpenDocumentFile,当然如果我们的APP重载了这个函数也要调用我们的但是我们的函数一定别忘记最后返回是调 用父类的此函数___________docMultTemplate的OpenDocumentFile函数参数不为空,此函数完成了大部分东西,包括新建文档类框架类等______________然后是调用CDocument就没什么意思了,当然我们要是重载了CDocument的新建函数就是调用子类虚函数。 他们两个只有在docMultTemplate和docSingleTemplate的OpenDocumentFile函数中的动作不同,单文档负责新建框架类和视类但是如果存在了我们就不重建了,只是给其赋值。而多文档无论如何都会新建一个视类和框架类文档类,这也就是为什么他是多文档结构的原因。

jsp实现文件上传和下载

1 JSP文件上传简单实例 1、index.html代码: 上传图片

2、使用到的函数和类说明 File类文件和目录路径名的抽象表示形式, File(parent,child)方法根据parent 抽象路径名和child 路径名字符串创建一个新File实例FileOutputStream文件输出流,InputStream输入流,将输入数据看成一根管道,可以形象的将输入流比喻成管道的入口,而输出流比喻成管道的出口。 read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。read() 从此输入流中读取一个数据字节。 write(int b) 将指定字节写入此文件输出流,write(byte[] b, int off, int len) 将指定字节数组中从偏移量off 开始的len 个字节写入此文件输出流。write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流中 Random.readLine()逐行读入,Random.seek(int pos)设置到此文件开头测量到的文件指针偏移量,该位置发生下一个读取和写入操作,Random.getFilePointer()返回此文件当前偏移量,Random.readByte()此方法从该文件的当前文件指针开始读取第一个字节。 https://www.doczj.com/doc/042402028.html,stIndexOf(char c)返回最后一次出现的指定字符在此字符串中的索引 3、do_upload.jsp <%@ page contentType="text/html;charset=gb2312" language="java"%> <%@ page import="java.io.*"%> 上传 <% try{ String temp=(String)session.getId();//获得sessionId File f1=new File((String)request.getRealPath("photo")+"/",temp); //获得photo所在的目

相关主题
文本预览
相关文档 最新文档