转载地址: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页面不是异步提交 所以没有实现弹出对话框告知是否操作成功! 菜鸟一个,知道的请赐教!
相关推荐
C# 获取文件路径 C# 获取文件路径是指在 C# 程序中获取当前执行文件的路径、当前工作目录的路径、基目录的路径等信息。在实际开发中,获取文件路径是非常重要的,例如在读取配置文件、加载资源文件、记录日志文件等...
标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...
在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径
理解如何在Java中获取文件路径,特别是区分绝对路径和相对路径,对于构建稳定、可移植的应用程序至关重要。本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 ####...
本文将深入探讨"js弹出窗口 + 获取上传文件全路径"这一主题,这两个知识点是JavaScript在交互式用户界面设计中的关键部分。 首先,让我们来讨论"js弹出窗口"。在网页开发中,弹出窗口通常用于显示警告信息、确认...
在探讨如何在IE7与IE8浏览器中获取上传文件的绝对路径之前,我们先来了解一下为何这成为了一个问题。Internet Explorer 7 和 IE8 是早期的网页浏览器版本,它们在处理DOM(文档对象模型)和JavaScript的方式上存在...
最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...
windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题
在使用FCKEditor这款强大的富文本编辑器时,有时我们需要自定义上传文件的路径,使其成为绝对路径,以便更好地管理和访问资源。FCKEditor默认情况下,上传文件的路径通常是相对路径,这可能在多服务器环境或者需要...
以下是一些在Java中获取文件绝对路径的方法: 1. `File.getAbsolutePath()` `java.io.File` 类提供了 `getAbsolutePath()` 方法,此方法返回表示文件或目录的绝对路径字符串。例如: ```java File file = new ...
在这个名为"BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip"的压缩包中,包含了一个用于获取文件相对路径的批处理脚本。 批处理脚本的编写通常涉及到DOS命令,例如`cd`(改变目录)、`dir`(列出目录内容)和`...
C#根据当前进程的启动路径,获得多个参数拼接的绝对路径。以及根据基准路径和参数获得相对路径。路径操作只用.NET中的System.IO和System.Text命名空间,相比其它的实现方式(比如采用System.Web命名空间)实用性更强...
<input type="file" id="importFile" /> <input type="button" onclick="upload()"/> [removed] ...如上面的代码,用文件上传对话框选择文件后,如果选择”D:\\temp\file\test.txt”文
### 拖动文件至对话框,获取文件路径 在基于对话框的程序设计中,实现文件拖拽功能是一项常见的需求。特别是在Visual C++(以下简称VC)开发环境中,这一功能的实现不仅增强了用户界面的友好性,也提升了用户体验。...
在 Servlet 中,可以使用 request.getServletPath() 获取当前文件的绝对路径,然后使用 request.getSession().getServletContext().getRealPath(request.getRequestURI()) 获取当前文件的绝对路径。同时,也可以使用...
在进行网页开发过程中,尤其是涉及到文件上传功能时,获取用户选择的文件的路径是一个常见需求。传统的HTML中,`<input type="file">` 元素可以用来让用户选择文件,但是出于安全考虑,浏览器出于安全考虑,不允许...
绝对路径的优点在于其明确性和不变性,即不论从哪个页面引用同一个文件,其路径都保持一致,这在大型项目中特别有用,能够避免因路径问题导致的链接错误。但同时,绝对路径的缺点也很明显,即在进行文件移动或站点...
- 如果你需要获取某个文件所在目录的上级目录,可以先通过`application.getRealPath(request.getRequestURI())`得到该文件的绝对路径,再使用`new File(...).getParent()`获取其上级目录。 2. **Servlet中获取路径...
"获取指定目录下的文件相对路径"这个主题就是关于如何在NSIS脚本中有效地管理文件路径,以便于安装过程中的文件操作。 首先,了解相对路径的概念是至关重要的。相对路径是相对于当前工作目录或某个基点的文件或目录...