我要实现的是 将客户端的EXCEL文件上传 再导入进数据库
解析EXCEL文件的代码已经写好了 需要一个绝对路径,但是上传文件该如何获取在客户端的路径,查了很久,解决不了。
求助!

解决方案 »

  1.   

    你要获取客户端的路径?如果是struts 的话你可以用他自带的上传,如果是servlet的话,就自己写一个上传不用获取客户端的路径。package com.zuxia.action;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;import org.apache.struts2.ServletActionContext;public class FileUploadAction { // 定义属性
    private File[] upload;// 内容 private String[] uploadFileName;// 文件名 private String[] uploadContentType;// 文件的类型

    public File[] getUpload() {
    return upload;
    } public void setUpload(File[] upload) {
    this.upload = upload;
    } public String[] getUploadFileName() {
    return uploadFileName;
    } public void setUploadFileName(String[] uploadFileName) {
    this.uploadFileName = uploadFileName;
    } public String[] getUploadContentType() {
    return uploadContentType;
    } public void setUploadContentType(String[] uploadContentType) {
    this.uploadContentType = uploadContentType;
    } public void upload() { for(int i=0;i<upload.length;i++){

    // 需要手动的读写文件
    FileInputStream fin = null;
    FileOutputStream fout = null;
    try { // 读取文件的
    fin = new FileInputStream(upload[i]); // 写入文件的位置
    fout = new FileOutputStream(new File(ServletActionContext
    .getServletContext().getRealPath("/")
    + "upload/" + uploadFileName[i])); // 一边读一边写
    byte[] data = new byte[1024];
    // read(data);//表示读取数据到字节数组中,并且返回读取的个数;如果小于0表示没有读取到数据(已经到达末尾)
    int count = 0;
    while ((count = fin.read(data)) > 0) {
    fout.write(data, 0, count);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally { if (fin != null){
    try {
    fin.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } if (fout != null) {
    try {
    fout.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    }



    System.out.println("上传成功!");
    }
    }。
      

  2.   

    我用的是spring mvc 
    就是要获取客户端的路径
      

  3.   

    你应该是让用户去他本机上选择的excel文件吧,这样你的页面上不就获取到了用户文件的路径,传递给后台不就可以了。
      

  4.   

    LZ啊 。不知道你在纠结什么。你的意思是说你这个项目不会放到web环境上。只有自己在本机访问?那你直接把前台的绝对路径传到后台不就可以了吗?
      

  5.   

    js能搜本地磁盘么,没试过。如果能的话,可以根据文件名搜一下,然后用ajax或表单提交传到服务端。
      

  6.   

    擦。我也觉得我很纠结。直接传个路径的话,我是IE9 我在JSP页面是用file  在JS中document.getElementById("file").value 弹出框是显示c:\fakepath\xxxx.xls 而我的文件是放在D盘的,那请问如何获取路径呢。
      

  7.   

    如果用一个smartUp上传插件的话,导入smartup包,然后直接在表达<input type="file">
    吧表单提交到一个JSP页面,然后,new smartUp().getFiles().getFile(0).getPath/getFileNAme/获取后缀,什么的都有