在线播放ftp上视频,ftp图片转base在线预览

	//播放视频
  @RequestMapping("/getVideo")
    public void ss(HttpServletRequest request, HttpServletResponse response, String fileName, String fileLength, String type, String fileFormat) throws IOException {
        OutputStream os = null;
        FTPClient ftpClient = ftpFileUtil.getFTPClient();
        try {
            os = response.getOutputStream();
            String rangeString = request.getHeader("Range");//如果是video标签发起的请求就不会为null
            long range = Long.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-")));
            response.setHeader("Content-Type", type + "/" + fileFormat);
            response.setContentLength(Integer.parseInt(fileLength));//10000是视频文件的大小,上传文件时都会有这些参数的
            response.setHeader("Content-Range", String.valueOf(range + (Integer.parseInt(fileLength) - 1)));//拖动进度条时的断点,其中10000是上面的视频文件大小,改成你的就好
            response.setHeader("Accept-Ranges", "bytes");
            int index = fileName.indexOf("/");
            String path = fileName.substring(0, fileName.indexOf("/", index + 1));
            String name = fileName.substring(path.length() + 1, fileName.length());
            response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
            ftpClient.changeWorkingDirectory(path);
            ftpClient.retrieveFile(name, os);
            ftpClient.logout();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            os.flush();
            os.close();
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.logout();
                } catch (IOException e) {

                }
            }
        }
    }
    //图片转base64在线预览
     @PostMapping("/redimagebase")
    public AjaxResult redimagebase(String localName) {
        InputStream inputStream = null;
        FTPClient ftpClient = null;
        String base = "data:image/jpeg;base64,";
        String re = null;
        try {
            int index = localName.indexOf("/");
            String path = localName.substring(0, localName.indexOf("/", index + 1));
            String name = localName.substring(path.length() + 1, localName.length());
            ftpClient = ftpFileUtil.getFTPClient();
            ftpClient.changeWorkingDirectory(path);
            FTPFile[] fs = ftpClient.listFiles();
            for (FTPFile ff : fs) {
                byte[] bytes = ff.getName().getBytes("iso-8859-1");
                String fileName = new String(bytes, "utf-8");
                if (name.equals(fileName)) {
                    inputStream = ftpClient.retrieveFileStream(fileName);
                }
            }
            String s = Base64Util.inputStream2Base64(inputStream);
            re=s;
            ftpClient.logout();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != inputStream) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        String base64 = base + re;
        return AjaxResult.success(base64);
    }
    //util
    package com.csyk.utils;

import sun.misc.BASE64Decoder;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;

public class Base64Util {
    public static    String inputStream2Base64(InputStream is) throws Exception {
        byte[] data = null;
        try {
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[100];
            int rc = 0;
            while ((rc = is.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            data = swapStream.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    throw new Exception("输入流关闭异常");
                }
            }
        }

        return Base64.getEncoder().encodeToString(data);
    }

    private static InputStream base2InputStream(String base64string) {
        ByteArrayInputStream stream = null;
        try {
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] bytes1 = decoder.decodeBuffer(base64string);
            stream = new ByteArrayInputStream(bytes1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stream;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Linux中实现FTP服务器的在线预览文件,首先需要确保已经安装并配置好了FTP服务器软件(如vsftpd)。然后,根据需要选择合适的在线预览文件的方法和工具。 一种常见的方法是使用在线文件查看器。可以使用一些现有的开源在线文件查看器应用程序,如FileRun,OwnCloud或Seafile等。这些应用程序通常提供用户友好的界面,允许用户通过FTP上传文件并在线查看各种文件格式,如文档、图片、音频和视频等。这些应用程序通常具有适合不同文件类型的预览插件,以便用户可以直接在网页中查看文件的内容,而无需下载到本地。 首先,需要在Linux服务器上安装并配置所选的在线文件查看器应用程序。根据具体的应用程序,安装过程和配置可能会有所不同,请参考相应的官方文档以获得详细的指导。 一旦安装和配置完成,你可以通过FTP上传文件到指定的目录。这样,在在线文件查看器的界面中,你就可以找到这些上传的文件,并通过点击文件名来预览文件。在线预览通常使用浏览器内置的功能或者适当的插件来实现,所以确保你的浏览器是最新版本,以获得最佳的预览效果。 通过该方法,你可以在Linux上实现FTP服务器的在线预览文件功能,允许用户直接在浏览器中预览查看上传的文件,而无需进行下载。这样不仅提供了更方便的方式来访问文件,还可以节省存储空间和网络带宽。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北996

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

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

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

打赏作者

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

抵扣说明:

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

余额充值