JAVA项目文件下载、浏览接口

JAVA项目文件下载、浏览接口

  关于文件上传参照我以前写的这个java项目文件上传文章
  如果要接口的写法的话,可以下载这个文件上传下载例子下载地址

  本篇文章只说文件下载部分

 /**
     * 文件下载接口
     * @param filePath  文件上传时,返回的相对路径
     * @param response
     * @param isOnLine  传入true,表示打开,但是打开的是浏览器能识别的文件,比如图片、pdf,word等无法打开
     *                  传入false,只是下载,如果不传入这个参数默认为false
     * @throws Exception
     */
    @RequestMapping(value = "/downloadFile",method = RequestMethod.GET)
    public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
        File f = new File(realPath+filePath);
        if (!f.exists()) {
            response.sendError(404, "File not found!");
            return;
        }
        String fileName = f.getName();
        fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");

        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;
        response.reset(); // 非常重要
        if (isOnLine) { // 在线打开方式
            URL u = new URL("file:///" + realPath+filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename=" + fileName);
            // 文件名应该编码成UTF-8
        } else { // 纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
        }
        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }

  上边这个接口是一个文件下载的接口,主要有以下几个注意的:

  • filePath 参数,是在文件上传后,后台应该给你返回一个相对路径,比如/upload/2018-08-03/test.jpg 这样的字符串,接着你在调用这个图片下载接口时,可以直接传回来即可。
  • isOnLine 参数,这个其实为了方便前端对于下载的文件,是预览,还是下载 ,提供了两种选择,请注意,文件预览,必须是可预览的文件,比如docxls 这种是浏览器无法预览的。传入true ,则会打开,传入false或者不传入这个参数,则只会下载。

      关于这个预览下载 多说几句,就是对于我们http 请求来说,文件的预览下载 ,其实对应于请求 中,是一个请求头设置 的问题,当然前提是这个文件可以被浏览器识别打开:

 response.setHeader("Content-Disposition", "inline; filename=" + fileName);
 response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

  如果是下载,那么上边为attachment
  如果是预览,那么上边为inline
  对于前端来说,其实图片的预览不需要关注这个,因为图片对于<img src=""> 等那种可以访问路径资源的标签,即使你设置的是下载 ,它也能自动打开,但是对于pdf ,貌似必须要在上边接口里,设置成预览 ,才能把它打开。

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Java项目中添加dll文件有以下几个步骤: 第一步,将所需的dll文件放置到项目的合适位置。通常情况下,dll文件需要放置在项目的根目录下的一个与系统相关的文件夹中,比如Windows系统中的“lib”或“lib64”文件夹。 第二步,打开Eclipse或其他Java开发工具,进入项目的“资源”或“库”文件夹。在该文件夹中创建一个与系统相关的文件夹,用于存放dll文件。 第三步,点击项目名称,选择“属性”或“配置构建路劲”。选择“构建路劲”选项卡,然后点击“添加库”按钮。 第四步,选择“外部库”选项卡,然后点击“添加JARs或DLLs”按钮。在弹出的窗口中,浏览到第二步创建的文件夹,选择所需的dll文件,点击“打开”。 第五步,在“构建路径配置”窗口中,选择刚刚添加的dll文件,点击“可见性”下的“所有”的复选框,然后点击“应用”或“确定”。 第六步,重新编译和运行项目Java程序将能够引用和调用dll文件中定义的功能和方法。 需要注意的是,添加dll文件时需要根据开发环境和所用的构建工具进行设置,具体步骤可能会有所差异。此外,还需要确保所添加的dll文件与项目的其他部分兼容,避免出现无法预料的错误和异常。 ### 回答2: 在Java项目中添加动态链接库(DLL)主要是为了调用本地的C或C++编写的函数或库。以下是添加DLL的步骤: 1. 将DLL文件放置在项目中的合适位置。可以创建一个文件夹(例如"lib")来存放所有的DLL文件。 2. 在Java项目中设置系统路径。可以使用System类的`setProperty`方法将DLL文件所在的文件夹添加到系统路径中,例如: ```java System.setProperty("java.library.path", "lib/"); ``` 3. 加载DLL文件。使用`System.loadLibrary`方法加载DLL文件,例如: ```java System.loadLibrary("myDll"); ``` 这将加载名为"myDll"的DLL文件。 4. 在Java代码中调用DLL中的函数。首先,需要在Java代码中定义与DLL函数对应的本地方法,使用`native`关键字进行声明,例如: ```java public native void myDllFunction(); ``` 然后,在需要调用DLL函数的地方调用该本地方法。 5. 编译和运行项目。编译并运行Java项目,在运行时,Java虚拟机将根据设置的系统路径加载DLL文件,并调用其中的函数。 需要注意的是,添加DLL文件可能涉及到平台依赖性,因此在不同的操作系统上可能需要不同的DLL文件。另外,确保DLL文件与操作系统的位数(32位或64位)兼容。如果DLL文件无法加载或调用,可能是由于路径设置不正确、DLL文件与项目不匹配等原因。 ### 回答3: 在Java项目中添加dll是为了让Java程序能够调用使用C或C++编写的动态链接库(DLL)来实现一些特定的功能。下面是如何在Java项目中添加dll的步骤: 1. 将dll文件放到项目的合适位置:通常情况下,dll文件需要放置在项目的根目录下或是lib目录下,将dll文件与Java源文件放在同一个目录下。 2. 设置Java库路径:通过设置java.library.path属性来指定dll文件的路径。可以通过命令行参数或是在项目中设置System属性的方式来完成。 ```java // 通过命令行参数设置 java -Djava.library.path=your_dll_path YourJavaClass // 在代码中设置 System.setProperty("java.library.path", "your_dll_path"); ``` 3. 加载dll库文件:在Java代码中使用System.loadLibrary()方法来加载dll库文件。这个方法的参数是dll文件的名称,不包括文件扩展名。 ```java System.loadLibrary("your_dll_name"); ``` 4. 调用dll库函数:一旦加载了dll库文件,就可以在Java代码中使用Native关键字声明一个本地方法,并使用Java本机接口(JNI)调用这个dll库中的函数。 ```java public class YourJavaClass { // 使用Native关键字声明本地方法 public native void yourDllMethod(); // 在静态代码块中加载dll库 static { System.loadLibrary("your_dll_name"); } // ... } ``` 在以上步骤完成之后,Java程序就可以调用dll库中的函数来实现特定的功能了。需要注意的是,在将dll文件添加到项目时要确保dll文件与项目的架构(32位或64位)相匹配,否则可能会导致问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值