`

关于上传文件获取绝对路径(转载)

 
阅读更多

转载地址: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>&nbsp;</td>

       <td><input type="button" value="导&nbsp;入" class="btn" onclick="check()">

       <input type="reset" value="重&nbsp;置" 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获取文件绝对路径类

    android获取文件绝对路径类,是本人项目中直接取出的类。在protected void onActivityResult()中使用

    C# 获取文件路径

    C# 获取文件路径 C# 获取文件路径是指在 C# 程序中获取当前执行文件的路径、当前工作目录的路径、基目录的路径等信息。在实际开发中,获取文件路径是非常重要的,例如在读取配置文件、加载资源文件、记录日志文件等...

    ant自动获取文件路径

    标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...

    一文讲清Python PyQt5的控件如何实现拖放获取文件路径(markdown)

    本篇文章将详细讲解如何使用PyQt5的控件,特别是QLineEdit,来实现拖放操作以获取文件路径。我们将深入理解相关代码,并了解如何将这一功能整合到你的项目中。 首先,让我们了解一下QLineEdit。QLineEdit是PyQt5中...

    js获取上传文件的绝对路径实现方法

    在服务器端,当文件成功上传后,可以通过文件上传的接口来处理文件,这时候就完全不需要在客户端获取文件的绝对路径。 最后,需要提醒的是,尽管某些浏览器可以通过修改设置来获取文件的真实路径,但出于安全和隐私...

    Java中获取文件路径的几种方式

    理解如何在Java中获取文件路径,特别是区分绝对路径和相对路径,对于构建稳定、可移植的应用程序至关重要。本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 ####...

    js弹出窗口 + 获取上传文件全路径

    本文将深入探讨"js弹出窗口 + 获取上传文件全路径"这一主题,这两个知识点是JavaScript在交互式用户界面设计中的关键部分。 首先,让我们来讨论"js弹出窗口"。在网页开发中,弹出窗口通常用于显示警告信息、确认...

    ie7/ie8获取上传文件的绝对路径源代码

    在探讨如何在IE7与IE8浏览器中获取上传文件的绝对路径之前,我们先来了解一下为何这成为了一个问题。Internet Explorer 7 和 IE8 是早期的网页浏览器版本,它们在处理DOM(文档对象模型)和JavaScript的方式上存在...

    windows linux 下,获取java项目绝对路径的方法

    windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题

    fckeditor上传文件绝对路径设置方法

    在使用FCKEditor这款强大的富文本编辑器时,有时我们需要自定义上传文件的路径,使其成为绝对路径,以便更好地管理和访问资源。FCKEditor默认情况下,上传文件的路径通常是相对路径,这可能在多服务器环境或者需要...

    获取文件路径

    在IT领域,获取文件路径是一项基础且至关重要的操作。它涉及到操作系统如何管理和访问存储在硬盘或其他存储设备上的文件。在编程中,理解并能够正确处理文件路径是进行读写文件、移动文件、复制文件等操作的前提。...

    JAVA获取文件绝对路径的方法

    以下是一些在Java中获取文件绝对路径的方法: 1. `File.getAbsolutePath()` `java.io.File` 类提供了 `getAbsolutePath()` 方法,此方法返回表示文件或目录的绝对路径字符串。例如: ```java File file = new ...

    java文件路径获取

    ### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...

    C#操作文件系统绝对路径和相对路径

    C#根据当前进程的启动路径,获得多个参数拼接的绝对路径。以及根据基准路径和参数获得相对路径。路径操作只用.NET中的System.IO和System.Text命名空间,相比其它的实现方式(比如采用System.Web命名空间)实用性更强...

    QT文件夹绝对路径定位

    绝对路径是指从根目录开始到达目标文件或文件夹的具体路径,它能够确保程序在不同的操作系统或环境中都能准确地定位到指定位置。 ### 相关知识点详解 #### 1. 使用`QDir`类获取绝对路径 QT库提供了一个强大的`...

    VC获取文件路径

    文件路径可以是绝对路径,从根目录开始,也可以是相对路径,相对于当前工作目录。本篇将详细介绍几种在C++中获取文件路径的方法。 1. **标准库函数**: C++标准库提供了一些基本的文件系统操作,包括获取文件路径...

    C# 拖入文件获取路径

    在C#编程中,"拖入文件获取路径"是一个常见的功能,它允许用户通过鼠标拖放操作将外部文件或文件夹直接放入应用程序界面,从而获取这些文件或文件夹的完整路径。这一功能在许多类型的软件中都有应用,比如文件管理器...

    在html页面使用JavaScript实行文件上传到本地服务器并获取文件所在路径

    使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...

    拖动文件至对话框,获取文件路径

    ### 拖动文件至对话框,获取文件路径 在基于对话框的程序设计中,实现文件拖拽功能是一项常见的需求。特别是在Visual C++(以下简称VC)开发环境中,这一功能的实现不仅增强了用户界面的友好性,也提升了用户体验。...

    文件的Handle获取文件路径

    这里提到的`NtQueryInformationFile`是一个内核级的系统调用,用于获取关于文件的各种信息,包括文件路径。这个函数需要一个已打开的文件句柄、一个用于返回信息的结构体以及指定要查询的文件信息类别。 代码中定义...

Global site tag (gtag.js) - Google Analytics