精华内容
下载资源
问答
  • js上传文件指定路径 jQuery或者js保存文件到本地
    千次阅读
    2021-06-11 04:05:10

    js怎么传递一个上传文件的路径

    jquery或者js获取上传文件的路径问题现有一表单,里面有一项是上传图片,思路是:点击提交(button)后,通我的理解是你应该先通过图片上传接口把图片上传到服务器上(上传后的服务器端的图片地址,保存到里),然后再统一提交所有的表单项。

    js中如何将某地址的图片保存到本地指定文件夹中?

    用JSPSMA处理,参考下面代码实现:

    用js如何实现点击按钮打开一个指定路径下的文件

    首先,打开计算机,然后打开JS,在其中创建一个HTML文件“test”。

    然后将HTML框架添加到测试文件中。

    然后添加两个输入,一个是button,另一个是file将ID设置为“open”样式类型为“display:None”并且不显示。

    JS中如何把上传的图片保存到指定文件目录

    String path_new = request.getRealPath("/") + "Upload\\" + filename_p;//文件上传SmartUpload su = new SmartUpload();

    jQuery或者js保存文件到本地

    java web项目java后台获取前台js上传文件的路径

    更多相关内容
  • 使用JavaScript实现文件上传到本地服务器并获取上传后文件所在路径,是由JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...
  • Java中如何将数据保存到服务器端

    千次阅读 2021-03-04 02:20:03
    展开全部您好,提问者:1、存储数据库32313133353236313431303231363533e4b893e5b19e31333335323462,建议。2、如果不涉及数据库,也可以用流存储一个文本文件中。importjava.io.*;publicclassDemo{...

    展开全部

    您好,提问者:

    1、存储到数据库32313133353236313431303231363533e4b893e5b19e31333335323462,建议。

    2、如果不涉及数据库,也可以用流存储到一个文本文件中。import java.io.*;

    public class Demo{

    public static void main(String[] args) throws IOException{

    BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\xx.txt"));

    bw.write("这里要接受存储的数据"); //try一下吧

    bw.newLine(); //换行

    bw.flush();

    bw.close(); //这里有异常,try一下吧

    //读取文件

    BufferedReader br = new BufferedReader(new FileReader("D:\\xx.txt"));

    String str = null;

    while((str=br.readLine())!=null){

    System.out.println(str);//这里是读取到的数据,一行一行读取

    }

    }

    }

    展开全文
  •  通过文件下载框实现将服务器上的文件下载到本地指定位置。这里需要指定服务器文件路径 //服务器文件路径 string strFilePath = Server.MapPath(~) + /excel/20170206104654.xlsx; FileInfo fileInfo = new ...
  • 使用C#语言,将文件(图片)路径保存到sqlserve数据库中,并且从数据库中读取出路径,找到相应的文件。
  • // 判断如果返回结果不为空并且MD5返回值比较结果正确,就设置文件路径保存到数据库 if (resultInfo != null &&resultInfo.geteTag().equalsIgnoreCase( MD5Tools.file2MD5(imageFile))) { rui.setState("SUCCESS");...



    我们在上篇文章中学习了  上传图片的配置:

    百度ueditor富文本--配置图片上传


    在文章的最后 讲到  ueditor 默认设置的 保存图片的 路径 是相对路径,项目相关的。


    保存的图片会放在tomcat的webapp目录下的 项目 文件夹中。

    F:\tomcat7\webapps\ROOT

    这样的配置 会 导致 重启  tomcat后  保存的 图片  丢失。



    解决方法一 修改图片保存路径在tomcat的webapp中项目之外


    修改了config.json中的imagePathFormat参数重新设置图片保存路径,比如:
    "imagePathFormat": "/../temp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */


    我们这里在原路径上加了/../temp。

    意思是 项目路径ROOT里的的上一级路径,也就是 路径设置为项目之外,webapp中。

    如图:


    F:\tomcat7\webapps\temp\ueditor\jsp\upload\image\20170825




    需要注意的是:

    一、图片保存路径在项目之外最好先新建好文件夹,不然第一次上传图片时创建目录速度会比较慢,会导致首张图片回调找不到图片404。



    图片保存的路径最好在tomcat的webapp文件夹中,这样我们才能访问到图片。

    如果图片不在Webapp目录下的,需要做做映射才能访问图片,回调显示图片才能成功。

    UEditor后端保存图片到目标位置之后,返回前端一个url。前端根据url,去取图片,取不到。

    如果想把图片存储到 非Webapp等硬盘目录,比如C:/img,需要手动修改controller.jsp的rootPath

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	import="com.baidu.ueditor.ActionEnter"
        pageEncoding="UTF-8"%>
    <%@ page trimDirectiveWhitespaces="true" %>
    <%
    
        request.setCharacterEncoding( "utf-8" );
    	response.setHeader("Content-Type" , "text/html");
    	
    	//String rootPath = application.getRealPath( "/" );
            String rootPath = "c:/img";
    	System.out.print(rootPath);
    	out.write( new ActionEnter( request, rootPath ).exec() );
    	
    %>

    图片保存在项目的外面,比如C:/img,前端请求不可能直接访问到,需要做映射。linux系统的话 一般需要做静态资源服务器域名访问。






    解决方法二  把图片上传到远程服务器上


    在良好的web架构中,图片和web站点是分开的,放在不同的服务器上,实现静态资源分离。


    也就是说 我们的web 在使用ueditor富文本编辑器时 上传插件上传的图片也应该上传到 图片资源服务器中。


    也就是要 上传到远程服务器上, 甚至可能要实现跨域上传。




    查询了很多资料之后 发现 主要有两种实现方式:


    推荐方式二,方式一实现起来比较复杂,需要一定的理解。




    方式一 重写接收图片的controller以及上传组件的调用


    默认使用的controller.jsp是一种很简单的操作,就是把文件流保存到 指定路径下。


    如果我们要实现 跨域上传图片到远程服务器的话 必须重写 这个controller,接收文件流之后 上传到远程服务器 ,返回图片地址。


    关于接收文件流 上传到远程服务器的 代码思路 可以参考:


    java上传文件到远程服务器(一)---HttpURLConnection方式


    java上传文件到远程服务器(二)---HttpClient方式


    java上传文件到远程服务器七牛云



    JSP页面修改

    JSP页面中在初始化UE的JS中 需要重新设置一下每个插件的调用事件,如下:

    // 初始化文本编辑器  
    $(".ueditorFlag").each(function() {  
        var id = this.id;      
        var ue = UE.getEditor(id, {  
            pasteplain: true, /* 纯文本粘贴 */  
            autoHeightEnabled:false,/* 启用右侧滚轮,默认是true自动长高模式*/  
            toolbars: [[  
              'fullscreen', 'source', '|', 'undo', 'redo', '|',  
              'bold', 'italic', 'underline',  
              'removeformat', '|',  
              'insertorderedlist', 'insertunorderedlist',  
              'indent', '|', 'justifyleft', 'justifycenter',  
              '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', 'insertimage',  
              '|', 'link', 'unlink'  
          ]]  
        });  
        
        UE.Editor.prototype._bkGetActionUrl=UE.Editor.prototype.getActionUrl;
        UE.Editor.prototype.getActionUrl=function(action){
        if (action == 'uploadimage' ||action== 'uploadscrawl' || action == 'uploadimage') {
        return "${basePath}/upload";
        } else if(action =='uploadvideo') {
        return "${basePath}/upload";
        } else if(action == 'listimage'){
        return "${basePath}/download";
        } else{
        return this._bkGetActionUrl.call(this, action);
        }
        } 
        
        console.log('ueditor for ' + id + ' init.');  
    });  



    简单介绍:
    UE.Editor.prototype._bkGetActionUrl=UE.Editor.prototype.getActionUrl; 是用来获取Action的,照写就行,然后就是下面的 UE.Editor.prototype.getActionUrl=function(action){....}  这里面的if语句,就是用来设置自定义action路由的,这里叫Controller。

    这里的action也就是 我们选中的 插件的 动作,对应的名称可以在 config.json中查找。

    如图:





    新建一个接收图片上传到远程服务器的controller

    /**
    * 上传图片
    *
    * @return
    * @throws IOException
    * @throws IllegalStateException
    * @RequestParam("upload")MultipartFile file,
    */
    @RequestMapping(value ="upload")
    public String uploadImage(
    HttpServletRequest request,HttpServletResponse response)
    throws IllegalStateException, IOException{
    response.setContentType("text/html;charset=UTF-8");
    ReturnUploadImage rui = null;//这个是UEditor需要的返回值内容,UEditor要的返回值需要封装成Json格式
    // 转型为MultipartHttpRequest:
    MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest) request;
    // 获得文件:
    MultipartFile file =multipartRequest.getFile("upfile"); //UEditor传到后台的是这个upfile,其他的文件上传,应该也差不多是这个,还没去研究,断点一下就知道了
    // 写入文件
    File imageFile =newFile("/"+Uuid()+".jpg");
    file.transferTo(imageFile);
    //现在获取了File接下来要上传到OSS上
    if(imageFile!=null){
    rui = new ReturnUploadImage();
    rui.setTitle(imageFile.getName());//这里需要设置文件名称如:xxx.jpg
    rui.setOriginal(imageFile.getName());//这里需要设置文件名称如:xxx.jpg
    // 判断文件是否为图片文件
    String r =ImageUtils.fileDetermine(imageFile, 3 * 1024);
    if (!StringUtils.isNotEmpty(r)) {
    // 上传文件(这里文件类型,要根据实际上传的类型去做,暂时是直接设置了.jpg,并且先保存到磁盘,这样对磁盘比较伤,每次上传都要先保存到磁盘,然后再删除)
    ResultInfo resultInfo = OSSObjTools.uploadObject(imageFile,
    "subWebPublicNotice");//这里是自己封装的OSS,上传到OSS上面
    // 判断如果返回结果不为空并且MD5返回值比较结果正确,就设置文件路径保存到数据库
    if (resultInfo != null
    &&resultInfo.geteTag().equalsIgnoreCase(
    MD5Tools.file2MD5(imageFile))) {
    rui.setState("SUCCESS");//这里上传成功的话一定要设置大写的 SUCCESS,失败还没测试,猜应该是FAIL,回头再去官网找找
    rui.setUrl(CommonTools.catchUrlPath(PubParam.BUCKET_NAME,
    PubParam.Mark_ShenZhen) +resultInfo.getFilePath());//这里是设置返回给UEditor的图片地址
    }
    }
    // 判断临时存放的文件是否存在
    if (imageFile.exists()) {
    // 删除临时存放的文件
    imageFile.delete();
    }
    }
    String result = JSON.toJSONString(rui);//这边就是为了返回给UEditor做的格式转换
    response.getWriter().write(result);
    return null;
    }


    大家可以在这个步骤上进行 修改 使用 我们前面提供的三种方式 修改 图片上传。


    上传完成之后 返回图片的地址 即可。


    需要注意的是  这里返回的 图片地址使用json格式,格式必须 符合 ueditor的格式规范,否则 插件无法识别 回显图片。



    返回给UEditor的参数


    这里你应该参考http://fex.baidu.com/ueditor/#dev-request_specification
    官方文档里面的 后端请求参数-请求规范,
    官方有介绍了,返回参数的格式,格式中json的key就是对应了类ReturnUploadImage里面的属性。
    转换后格式应该是这样的,要严格按照文档上面的格式
    {"original":"5dfcfea3e3b442bda3972053266c3bd3.jpg","state":"SUCCESS","title":"5dfcfea3e3b442bda3972053266c3bd3.jpg","url":"http://www.xxxxx321.com/mmmm/xxxModuleName/20150922/5dfcfea3e3b442bda3972053266c3bd3.jpg"}
    注:不同的文件上传,返回的属性不一样
    =======================ReturnUploadImageStart============================================
    public classReturnUploadImage {
    private String state;//上传状态SUCCESS 一定要大写
    private String url;//上传地址
    private String title;//图片名称demo.jpg
    private String original;//图片名称demo.jpg
    ....getter & setter...
    }
    =======================ReturnUploadImage End==============================================
    这里官方文档也说的很清楚,对应 config、uploadimage、uploadscrawl、uploadvideo、uploadfile....都有各自的格式
    文档里面这些对应的就是xxxxActionName
    官方文档截图:








    方式二  调用远程服务器上的controller.jsp


    图片上传时调用的接口是在ueditor.config.js中设置的:

       // 服务器统一请求接口路径
           , serverUrl: URL + "jsp/controller.jsp"


    我们就想着  能不能直接把这个 改成 远程服务器上的 controller.jsp就可以把图片上传到远程服务器上了。


    答案是  可以。


    但是 需要做一些处理。


    环境布置


    因为我们使用的java版本的ueditor,controller.jsp运行接收图片是需要java环境的,所以我们首先在远程服务器上部署一个tomcat。

    然后在tomcat的webapp目录中新建一个ROOT目录。

    把config.json和controller.jsp放入其中。

    启动tomcat即可。

    如图:



    config.json

    内容如下:

    /* 前后端通信相关的配置,注释只允许使用多行方式 */
    {
            /* 服务器存储配置 */
            "saveRootPath": "/data/nginx/static", /* 文件保存的根路径 */
    
        /* 上传图片配置项 */
        "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
        "imageFieldName": "upfile", /* 提交的图片表单名称 */
        "imageMaxSize": 2048000, /* 上传大小限制,单位B */
        "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
        "imageCompressEnable": true, /* 是否压缩图片,默认是true */
        "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
        "imageInsertAlign": "none", /* 插入的图片浮动方式 */
        "imageUrlPrefix": "http://upload.23cube.com", /* 图片访问路径前缀 */
        "imagePathFormat": "/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                                    /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
                                    /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
                                    /* {time} 会替换成时间戳 */
                                    /* {yyyy} 会替换成四位年份 */
                                    /* {yy} 会替换成两位年份 */
                                    /* {mm} 会替换成两位月份 */
                                    /* {dd} 会替换成两位日期 */
                                    /* {hh} 会替换成两位小时 */
                                    /* {ii} 会替换成两位分钟 */
                                    /* {ss} 会替换成两位秒 */
                                    /* 非法字符 \ : * ? " < > | */
                                    /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
    
        /* 涂鸦图片上传配置项 */
        "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
        "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
        "scrawlPathFormat": "/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
        "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
        "scrawlUrlPrefix": "http://upload.23cube.com", /* 图片访问路径前缀 */
        "scrawlInsertAlign": "none",
    
        /* 截图工具上传 */
        "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
        "snapscreenPathFormat": "/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
        "snapscreenUrlPrefix": "http://upload.23cube.com", /* 图片访问路径前缀 */
        "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
    
        /* 抓取远程图片配置 */
        "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
        "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
        "catcherFieldName": "source", /* 提交的图片列表表单名称 */
        "catcherPathFormat": "/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
        "catcherUrlPrefix": "http://upload.23cube.com", /* 图片访问路径前缀 */
        "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
        "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
    
        /* 上传视频配置 */
        "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
        "videoFieldName": "upfile", /* 提交的视频表单名称 */
        "videoPathFormat": "/editor/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
        "videoUrlPrefix": "http://upload.23cube.com", /* 视频访问路径前缀 */
        "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
        "videoAllowFiles": [
            ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
            ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
    
        /* 上传文件配置 */
        "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
        "fileFieldName": "upfile", /* 提交的文件表单名称 */
        "filePathFormat": "/editor/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
        "fileUrlPrefix": "http://upload.23cube.com", /* 文件访问路径前缀 */
        "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
        "fileAllowFiles": [
            ".png", ".jpg", ".jpeg", ".gif", ".bmp",
            ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
            ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
            ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
            ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
        ], /* 上传文件格式显示 */
    
        /* 列出指定目录下的图片 */
        "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
        "imageManagerListPath": "/editor/upload/image/", /* 指定要列出图片的目录 */
        "imageManagerListSize": 20, /* 每次列出文件数量 */
        "imageManagerUrlPrefix": "http://upload.23cube.com", /* 图片访问路径前缀 */
        "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
        "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
    
        /* 列出指定目录下的文件 */
        "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
        "fileManagerListPath": "/editor/upload/file/", /* 指定要列出文件的目录 */
        "fileManagerUrlPrefix": "http://upload.23cube.com", /* 文件访问路径前缀 */
        "fileManagerListSize": 20, /* 每次列出文件数量 */
        "fileManagerAllowFiles": [
            ".png", ".jpg", ".jpeg", ".gif", ".bmp",
            ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
            ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
            ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
            ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
        ] /* 列出的文件类型 */
    
    }

    saveRootPath 和  imagePathFormat 共同决定了 存储的路径 /data/nginx/static/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}。




    controller.jsp

    代码为:

    <%@ page language="java" contentType="text/html; charset=UTF-8" import="com.baidu.ueditor.ActionEnter" pageEncoding="UTF-8"%>
    <%@ page trimDirectiveWhitespaces="true"%>
    <%
        request.setCharacterEncoding("utf-8");
        response.setHeader("Content-Type", "text/html");
        response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
        response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With");
        String rootPath = application.getRealPath("/");
        out.write(new ActionEnter(request, rootPath).exec());
    %>


     response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
     response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With");

    这两句是相对于原controller.jsp新增的。

    主要是允许跨域传输。


    http://localhost:8080需要修改成与自己web服务器所在的 ip或者域名一致。


    我这里是 用本地来测试 所以设置成了http://localhost:8080。


    如果不加这两句的话 会报跨域错误,类似于:

    XMLHttpRequest cannot load http://d.com/controller.jsp?action=uploadimage&encode=utf-8. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://c.com' is therefore not allowed access.




    启动tomcat后我们发现已经可以访问到 这个controller了。

    我这里图片资源服务器是配置有域名的,如果域名是: test.123.com。

    tomcat的端口是9003。

    直接访问tomcat的端口显示如下:


    如果没有域名的话 直接使用远程ip也可以。




    那么 我们就可以在web中配置这个服务器接收接口了。

    找到 web项目初始化ueditor使用的ueditor.confi.js。

    修改如下:

     , serverUrl: "http://test.123.com:9003/controller.jsp"


    如图:





    到这里就配置完成了。


    启动web项目,上传图片成功:




    然后到 配置的保存图片路径/data/nginx/static/editor/upload/image中查看,成功保存:











    展开全文
  • 背景:一个系统中有web网站与APP两个客户端,两个客户端有分别的后台,共同部署在一个服务器上,APP有一个上传图片、文件的功能,网站则可以查看、下载APP上传的图片,下载APP上传的文件。 问题:APP将文件上传...

    背景:一个系统中有web网站与APP两个客户端,两个客户端有分别的后台,共同部署在一个服务器上,APP有一个上传图片、文件的功能,网站端则可以查看、下载APP上传的图片,下载APP上传的文件。

    问题:APP将文件上传到服务器上并且上传到的是项目内的地址是没问题的,但是因为重新部署或Tomcat突然犯抽导致需要重装什么的,以前上传的图片和文件可能会丢失。可以将文件和图片上传到项目外,可以采用配置Tomcat的虚拟路径。同时需要解决文件下载问题。具体看下面:

    A 首先看一下虚拟路径的配置以及图片访问

    1.采用配置Tomcat的虚拟路径, 打开  tomcat文件夹下--conf文件夹--server.xml文件

     2.将下面的代码配置到Host标签下,此时起到一个映射作用,将实际地址映射成了/fileFile

    <Context path="/fileFile"  docBase="F:\img\upload" debug="0" reloadable="true" />
    

     

    3.此时项目启动后 localhost:8080/fileFile/hh.jpg  其实是访问 F:\img\upload下的图片

    图片访问的问题解决了,我们来看一下,如何下载该虚拟路径的文件,原来是像用像访问图片一样,用网上很多的方法js下载文件,但是发现js不能下载txt、pdf等格式,所以还是选择用java来下载。

     

    B 下载虚拟路径下的文件

    下面贴上步骤:

    1. 为了方便应用的迁移以及修改,在java代码中最好不要使用绝对路径,所以就用到了配置文件,在resource

    目录下新建一个fileFilePath.properties文件配置两个键值: 

    fileFilePath=/fileFile 
    fileFileRealPath=F:\\img\\upload

    接下来是前台和后台的代码:

    2.后台代码

    (a)control层 这里是在ssm框架的项目下写的,其实简单用servlet等也可以实现

        /**
         * 下载文件
         * @param filename 下载的文件名 包括后缀 如.txt等
         * @param response
         * @throws Exception
         */
        @RequestMapping(value="/fileDownload",method=RequestMethod.GET)
    public void download(@RequestParam(value="filename")String filename,
                         HttpServletResponse response) throws Exception {
            //1.读取刚才配置的fileFile.properties文件
        ResourceBundle rb = ResourceBundle.getBundle("fileFilePath", Locale.getDefault());
            //2.读取相对路径
        String fileFilePath=rb.getString("fileFilePath");//相对路径
            //2.读取绝对路径 即硬盘的存放路径
        String fileFileRealPath=rb.getString("fileFileRealPath");//硬盘存放路径
        FileDownload.fileDownload(response, fileFileRealPath+"\\"+filename, filename);
    
    }

    (2)所用到的 FileDownload代码如下:

    public class fileDownload {
        public static void fileDownload(final  HttpServletResponse response, String filePath, String fileName) throws Exception{
    
            byte[] data = toByteArray2(filePath);
            fileName = URLEncoder.encode(fileName, "UTF-8");
            response.reset();
            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            response.addHeader("Content-Length", "" + data.length);
            response.setContentType("application/octet-stream;charset=UTF-8");
            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
            outputStream.write(data);
            outputStream.flush();
            outputStream.close();
            response.flushBuffer();
    
        }
        /**
         * 读取到字节数组
         *
         * @param filePath
         * @return
         * @throws IOException
         */
        public static byte[] toByteArray2(String filePath) throws IOException {
    
            File f = new File(filePath);
            if (!f.exists()) {
                throw new FileNotFoundException(filePath);
            }
    
            FileChannel channel = null;
            FileInputStream fs = null;
            try {
                fs = new FileInputStream(f);
                channel = fs.getChannel();
                ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());
                while ((channel.read(byteBuffer)) > 0) {
                }
                return byteBuffer.array();
            } catch (IOException e) {
                e.printStackTrace();
                throw e;
            } finally {
                try {
                    channel.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    3.前台 通过点击按钮触发函数,触发的函数如下,需要将文件名传递过去

        function filedownload(filename) {
       
            window.location.href='<%=basePath%>/fileDownload.do?filename='+filename;
                
        }

    注意这里需要用window.location.href来访问后台接口。

    总结:其实下载本地文件成功之后,部署到服务器上是一样的效果,做对应的更改即可

    参考链接:

    https://panyongzheng.iteye.com/blog/2067554

     

    展开全文
  • 1、文件下载页面用来显示下载的文件数量和大小,以及总文件大小。数据展示这里就不贴了,就贴后面需要用到的三个弹出层吧:遮罩层、文件下载提示框、下载完成弹出框。 &lt;!-- 遮罩层 --&gt; &lt;...
  • // 返回图片的服务器端ID $.ajax({ type: "GET", //这个url是保存微信图片 url: "${basePath}/upload/WxImgSave", async: false, dataType: "json", data: { "serverId":serverId }, success: function(data){ ...
  • Java 把本地文件存放到服务器

    千次阅读 2021-12-03 17:29:11
    } } /** * 上传文件 * @param localFile 本地文件 * @param remoteTargetDirectory 服务器目录 */ public static void putFile(String localFile, String remoteTargetDirectory) { try { connection.connect();...
  • java web的文件上传功能,文件上传后保存到服务器本地,亲测通过,并带有详细的注释讲解,简单,适合入门的开发人员。
  • 1.用户down线上文件 这个有两种情况,一种是用户申请,页面跑完...首先不管是那种需求,都现在项目的配置文件settings.py 去设置静态文件路径 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_...
  • 【Linux】Centos yum 安装保存RPM到本地

    千次阅读 2020-07-12 22:10:07
    Centos中yum安装的包保存到本地 1、修改yum配置文件 sed -i "s/keepcache=0/keepcache=1/g" /etc/yum.conf 2、清理yum缓存 yum clean all 3、yum安装 yum -y install gcc 4、查看rpm包 /var/cache/yum/x86_64/7/...
  • 将图片从本地上传到服务器的过程详解

    万次阅读 多人点赞 2018-12-09 16:55:14
    将图片从本地上传到服务器主要分为三个过程 第一,准备工作 第二,图片显示在前端页面 第三,发送给服务器 详情: 准备工作 定义一个input标签,type=file,然后让他隐藏,用一个lable标签设置它的for属性指向这个...
  • java从服务器下载文件,可选择路径保存文件
  • web前端上传图片Java后端,并保存到本地 /** * 上传图片 * @param file * @return */ @RequestMapping(value = "/uploadFile") @ResponseBody // 参数:(图片名称,图片(不进行特殊处理))前端统一放file...
  • 下载后,复制vendor框架目录中。代码示例: public function qrcode($content=&quot;&quot;, $filename=&quot;&quot;) { header('Content-Type: image/png'); vendor(&quot;...
  • openwrt syslog保存log到本地文件

    千次阅读 2020-12-15 10:12:02
    syslog,可以保存应用日志到本地,也可以透过tcp或udp传送syslog服务器 openwrt 19.07 添加系统配置,指定log文件:option log_file ‘/var/log/message.log’,指定log大小:option log_size ‘64’ root@...
  • Java上传文件到服务器端的方法

    千次阅读 2021-02-12 14:15:38
    Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传。...上传文件使用文件...
  • 如题,将本地的Javaweb项目部署在Linux服务器上,并且路径正确,但是一直404,但是可以访问Linux上的Tomcat的ROOT中的内容,原因是web项目使用的jdk版本和Linux上的jdk版本不一致,可以修改项目编译的jdk版本,或者...
  • 新年第一章,祝大家新年快乐。...这次是使用Java Socket令Client与Server通信,以文本文档的形式上传一个查询结果到服务器的功能,另外利用还有file保存本地的功能。 查询是基于Sql Server中的一个很简易的数据库中
  • 浏览器的本地存储与服务器端存储

    千次阅读 2018-08-20 17:07:37
    服务器端也可以保存所有用户的数据,但需要的时候浏览器向服务器请求数据 1.服务器端可以保存用户的持久性数据,如数据库和云存储将用户大量数据保存服务器端  2.服务器端也可以保存用户的临时会话...
  • 2.保存excel文件至本地服务器 3.将excel文件写入Mysql数据库 后端技术:Python FastAPI 框架 实验前提: 1.已经完成Linux虚拟机的虚拟环境的搭建 2.已经完成Pycharm远程连接Linux虚拟环境 3.已经完成Fast...
  • 在这几天的开发里,我所在的开发环境是部署在centos7的云服务器上。这就有一个头疼的问题,我该怎么开发呢?有些朋友就会说,直接用vim。我想过,但是我技术比较菜还没那种vim很熟练的...
  • 今天晚上我发现我有一个毛病 总...既然想成为一个程序员 当然方便自己了~ 所以就写了一个小程序 开始了 既然读取你的博客访问量 找到你csdn的随便一篇文章 或者主页。(比如我的:http://blog.csdn.net/su201451
  • 服务器B从远程服务器A中得到文件路径,服务器B通过拿的文件路径,将文件处理后,客户端得到响应,实现保存文件在本地。二、思路代码 (这里以pdf文件为例子,服务器端B处理代码) //响应内容,这里在response中不...
  • <form method="post" enctype="multipart/form-data" action="upload.do">...请选择上传的文件:</p> <p><input type="file" name="file" /></p> <p><inp...
  • System.out.println("下载图片到本地。。。。"); } android代码: /** * 下载图像方法 * * @param url * @return */ public static Bitmap downloadBitmap(String url) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,992
精华内容 48,396
关键字:

服务器端要保存的路径保存到本地