转载地址:http://www.cnblogs.com/linjiqin/archive/2011/03/21/1990688.html
这个例子原理:
通过建立本地和服务器之间的通信链接 把本地中要上传的文件通过流上传到服务器上面
然后读取服务器中的文件。我用服务器中文件的路径代替本地的绝对路径
其实没有获取到本地的绝对路径,网上很多关于这方面的办法 但是大多都是针对IE和FF 没有Chrome
就借鉴了另一种方法。
多个<input type="file" name="image">的上传 name 在Action中对应File[] image 可以改为其他名称
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.Writer;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import org.jsoup.helper.HttpConnection.Response;
import com.jpsycn.kfwggl.common.tools.CopyDataToDatabase;
import com.jpsycn.kfwggl.common.tools.readExcel;
import com.opensymphony.xwork2.ActionSupport;
-----------------------控制层
@SuppressWarnings("serial")
public class UpLoadAction extends ActionSupport{
private File[] image; //上传的文件 name="image"
private String[] imageFileName; //文件名称
private String[] imageContentType; //文件类型
private String savePath;
@SuppressWarnings({ "static-access", "unchecked" })
@Override
public String execute() throws Exception {
String msg;
ServletActionContext.getRequest().setCharacterEncoding("UTF-8");
List<List<String>> lt=null;
boolean u=false;
boolean d=false;
try {
//取得需要上传的文件数组
File[] files = getImage();
if (files !=null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
//建立上传文件的输出流, getImageFileName()[i]
String url=getSavePath() + "\\" + getImageFileName()[i];
FileOutputStream fos = new FileOutputStream(url);
//建立上传文件的输入流
FileInputStream fis = new FileInputStream(files[i]);
byte[] buffer = new byte[1024];
int len = 0;
while ((len=fis.read(buffer))>0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
//System.out.println(url);
lt=new readExcel().readExcel(url);
if(i==0){
u=new CopyDataToDatabase().addUser(lt,"TB_USER");
}else if(i==1){
d=new CopyDataToDatabase().addDepart(lt, "TB_DEPART");
}else if(i==2){
new CopyDataToDatabase().add_user_depart(lt, "TB_USER_DEPART");
}
}
}
if(u==false||d==false){
msg="faile";
}else{
msg="success";
}
} catch (Exception e) {
msg="faile";
e.printStackTrace();
}
return msg;
}
public File[] getImage() {
return image;
}
public void setImage(File[] image) {
this.image = image;
}
public String[] getImageFileName() {
return imageFileName;
}
public void setImageFileName(String[] imageFileName) {
this.imageFileName = imageFileName;
}
public String[] getImageContentType() {
return imageContentType;
}
public void setImageContentType(String[] imageContentType) {
this.imageContentType = imageContentType;
}
/**
* 返回上传文件保存的位置
*
* @return
* @throws Exception
*/
public String getSavePath() throws Exception {
return ServletActionContext.getServletContext().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
注:savePath在struts.xml中配置 配置的参数如:Excel 必须在项目中有对应的名称为Excel的文件夹
-----------------struts.xml
<package name="upload1" namespace="/upload1" extends="struts-default">
<action name="upload1" class="com.jpsycn.kfwggl.system.action.UpLoadAction" method="execute">
<!-- 要创建/image文件夹,否则会报找不到文件 -->
<param name="savePath">/Excel</param>
<result name="success">/WEB-INF/system/import/message.jsp</result>
<result name="faile">/WEB-INF/system/import/faile.jsp</result>
</action>
<action name="u_*" class="com.jpsycn.kfwggl.system.action.UpLoadAction" method="{1}">
<result name="success">/WEB-INF/system/import/Import.jsp</result>
</action>
</package>
--------------jsp页面
<form id="myForm" enctype="multipart/form-data" method="post">
<table class="ceshi2" width="100%" border="0" cellspacing="0">
<tr>
<td width="20%" class="tit2" nowrap="nowrap" >请选择存放用户的Excel文件:</td>
<td><input type="file" id="userExcelURL" name="image" /></td>
</tr>
<tr>
<td width="20%" class="tit2" nowrap="nowrap" >请选择存放机构的Excel文件:</td>
<td><input type="file" id="departExcelURL" name="image" /></td>
</tr>
<tr>
<td width="20%" class="tit2" nowrap="nowrap" >请选择存放用户和机构关联关系的Excel文件:</td>
<td><input type="file" id="userAndDepartURL" name="image"/></td>
</tr>
<tr>
<td> </td>
<td><input type="button" value="导 入" class="btn" onclick="check()">
<input type="reset" value="重 置" class="btn">
</td>
</tr>
</table>
</form>
</body>
<script type="text/javascript">
function check(){
var userExcelURL=$("#userExcelURL").val();
var departExcelURL=$("#departExcelURL").val();
var userAndDepartURL=$("#userAndDepartURL").val();
if(userExcelURL==""||userExcelURL.indexOf(".xls")<0){
alert("请存放选择用户的Excel文件!");
}else if(departExcelURL==""||departExcelURL.indexOf(".xls")<0){
alert("请存放选择机构的Excel文件!");
}else if(userAndDepartURL==""||userAndDepartURL.indexOf(".xls")<0){
alert("请选择存放用户和机构关联关系的Excel文件!");
}else{
//alert(userAndDepartURL);
var form=document.getElementById("myForm");
form.action="<%=basePath%>upload1/upload1.do";
form.submit();
}
</script>
-----------------------------------------
jsp页面不是异步提交 所以没有实现弹出对话框告知是否操作成功! 菜鸟一个,知道的请赐教!
相关推荐
android获取文件绝对路径类,是本人项目中直接取出的类。在protected void onActivityResult()中使用
C# 获取文件路径 C# 获取文件路径是指在 C# 程序中获取当前执行文件的路径、当前工作目录的路径、基目录的路径等信息。在实际开发中,获取文件路径是非常重要的,例如在读取配置文件、加载资源文件、记录日志文件等...
标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...
本篇文章将详细讲解如何使用PyQt5的控件,特别是QLineEdit,来实现拖放操作以获取文件路径。我们将深入理解相关代码,并了解如何将这一功能整合到你的项目中。 首先,让我们了解一下QLineEdit。QLineEdit是PyQt5中...
这里提到的`NtQueryInformationFile`是一个内核级的系统调用,用于获取关于文件的各种信息,包括文件路径。这个函数需要一个已打开的文件句柄、一个用于返回信息的结构体以及指定要查询的文件信息类别。 代码中定义...
在服务器端,当文件成功上传后,可以通过文件上传的接口来处理文件,这时候就完全不需要在客户端获取文件的绝对路径。 最后,需要提醒的是,尽管某些浏览器可以通过修改设置来获取文件的真实路径,但出于安全和隐私...
在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径
理解如何在Java中获取文件路径,特别是区分绝对路径和相对路径,对于构建稳定、可移植的应用程序至关重要。本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 ####...
在探讨如何在IE7与IE8浏览器中获取上传文件的绝对路径之前,我们先来了解一下为何这成为了一个问题。Internet Explorer 7 和 IE8 是早期的网页浏览器版本,它们在处理DOM(文档对象模型)和JavaScript的方式上存在...
最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...
类加载器可以获取到类文件所在的路径,这是获取类绝对路径的基础。 1. **获取当前类的资源路径**:Java提供了一个内置的方法`getClass().getResource()`或`getClass().getResourceAsStream()`,它们可以从类路径中...
在IT领域,获取文件路径是一项基础且至关重要的操作。它涉及到操作系统如何管理和访问存储在硬盘或其他存储设备上的文件。在编程中,理解并能够正确处理文件路径是进行读写文件、移动文件、复制文件等操作的前提。...
在这个名为"BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip"的压缩包中,包含了一个用于获取文件相对路径的批处理脚本。 批处理脚本的编写通常涉及到DOS命令,例如`cd`(改变目录)、`dir`(列出目录内容)和`...
以下是一些在Java中获取文件绝对路径的方法: 1. `File.getAbsolutePath()` `java.io.File` 类提供了 `getAbsolutePath()` 方法,此方法返回表示文件或目录的绝对路径字符串。例如: ```java File file = new ...
C#根据当前进程的启动路径,获得多个参数拼接的绝对路径。以及根据基准路径和参数获得相对路径。路径操作只用.NET中的System.IO和System.Text命名空间,相比其它的实现方式(比如采用System.Web命名空间)实用性更强...
绝对路径是指从根目录开始到达目标文件或文件夹的具体路径,它能够确保程序在不同的操作系统或环境中都能准确地定位到指定位置。 ### 相关知识点详解 #### 1. 使用`QDir`类获取绝对路径 QT库提供了一个强大的`...
在C#编程中,"拖入文件获取路径"是一个常见的功能,它允许用户通过鼠标拖放操作将外部文件或文件夹直接放入应用程序界面,从而获取这些文件或文件夹的完整路径。这一功能在许多类型的软件中都有应用,比如文件管理器...
文件路径可以是绝对路径,从根目录开始,也可以是相对路径,相对于当前工作目录。本篇将详细介绍几种在C++中获取文件路径的方法。 1. **标准库函数**: C++标准库提供了一些基本的文件系统操作,包括获取文件路径...
使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...