精华内容
下载资源
问答
  • 2021-09-16 10:30:34

    谷歌内核正常,IE下载无后缀名,打不开

    • 本次项目需要下载的文件就两种格式xlsx和zip
    • 所以走ie时手动添加后缀名就可以搞定了
    export const download = async({ url, params, method = 'post', type = 'xlsx' }) => {
      const isget = method.toLowerCase() === 'get';
      const obj = isget ? { params } : { data: params };
      const baseURL = process.env.VUE_APP_BASE_API + url
      try {
        const { data } = await axios({ baseURL, method, ...obj })
        if (data.code) {
          window.alert(data.message || '网络繁忙,请稍后重试');
        } else {
          axios({ baseURL, method, ...obj, responseType: 'arraybuffer' })
            .then(res => {
              res._params = params
              _download(res, type);
            }).catch(err => {
              window.alert(err.message || '网络繁忙,请稍后重试');
            })
        }
      } catch (error) {
        console.log(error);
      }
    }
    const _download = (res, _type) => {
      const type = _type === 'xlsx' ? 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'application/zip';
      const fuffix = _type === 'xlsx' ? '.xlsx' : '.zip'
      const content = res.data
      const blob = new Blob([content], { type });
      const fileName = res._params.fileName || '';
      if ('download' in document.createElement('a')) { // 非IE下载
        const elink = document.createElement('a')
        elink.download = window.decodeURIComponent(fileName);
        elink.style.display = 'none'
        elink.href = window.URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        window.URL.revokeObjectURL(elink.href) // 释放URL 对象
        document.body.removeChild(elink)
      } else { // IE10+下载
        navigator.msSaveBlob(blob, fileName + fuffix )
      }
    }
    
    更多相关内容
  • 今天小编就为大家分享一篇关于易语言通过文件后缀名查找相关文件的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 主要介绍了PHP实现批量修改文件后缀名的方法,涉及php针对文件的递归遍历及重命名的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 本篇文章主要介绍了详解Linux批量更改文件后缀名,主要是使用了rename,有需要的朋友可以了解一下。
  • 小程序对文件后缀名解析 引用微信开放平台文档 1、后缀: 1.1、WXSS: 样式文件(类似CSS) WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改。 新增了尺寸单位。在写 CSS 样式时,开发者...
  • 用c语言根据文件后缀名判断文件类型输入一个字符串代表一个文件名(带后缀名),输出这个文件文件类型。(只有三种后缀名,对应三种文件类型。.doc->Word .xls->Excel ppt->PowerPoint)输入一个字符串代表一个...
  • 选择文件所在目录,填写文件后缀名,如png,jpg等,不用加".",点击执行,会把文件夹下所有文件修改为自己定义的后缀名文件,会自动生成一个新的文件夹,文件存放里面,保留原来的文件
  • 后缀名字典

    2018-08-06 16:34:16
    后缀名字典(TXT)
  • 主要为大家详细介绍了C#遍历文件夹获取指定后缀名文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 例如输入.txt可以获取到关联的打开程序位notepad.exe,或者输入.avi可以获取打开avi视频文件的exe
  • SPRINGBOOT-finereport代码-需要修改文件后缀名,其内比较实用而且可应用于实际项目,比较有参考价值
  • 详细介绍了C#文件后缀名,有需要的朋友可以参考一下
  • 主要介绍了Shell脚本批量修改文件后缀名,问中收集了2个示例,需要的朋友可以参考下
  • import org.apache.poi.ss.usermodel.Workbook; import javax.servlet.ServletException; import javax.servlet.... 问题,我下载出来的文件没有后缀名,而且文件名和我自己定义的也不一样,请老师帮忙看看!

    package com.imooc.servlet;

    import com.imooc.entity.Student;

    import com.imooc.service.ExcelService;

    import org.apache.poi.ss.usermodel.Workbook;

    import javax.servlet.ServletException;

    import javax.servlet.ServletOutputStream;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import java.io.IOException;

    import java.util.List;

    @WebServlet(name = "ExportExcelServlet", urlPatterns = "/exportExcel")

    public class ExportExcelServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    ExcelService excelService = new ExcelService();

    List studentList = excelService.redExcel("c:/upload/Student.xlsx");

    Workbook workbook = excelService.exportExcel(false, studentList);

    response.setHeader("Context-Disposition", "attachment;filename=Students.xlsx");

    ServletOutputStream outputStream = response.getOutputStream();

    workbook.write(outputStream);

    outputStream.flush();

    outputStream.close();

    workbook.close();

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doPost(request, response);

    }

    }

    package com.imooc.service;

    import com.imooc.dto.ImportExcelParamDto;

    import com.imooc.entity.Student;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.apache.poi.ss.usermodel.WorkbookFactory;

    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.List;

    public class ExcelService {

    /**

    * 读取上传的Excel文件

    *

    * @param dto(上传的参数对象)

    * @return 返回上传文件中的数据对象

    */

    public List redExcel(ImportExcelParamDto dto) {

    List impStudentList = new ArrayList<>();

    Workbook workbook = null;

    try {

    //获取上传的Excel文件输入流,并将其传给workbook

    workbook = WorkbookFactory.create(dto.getFile().getInputStream());

    //获得Excel文件的第一个sheet

    Sheet sheet = workbook.getSheetAt(0);

    //获得Sheet下的最后一个有效行

    int rowNum = sheet.getLastRowNum();

    //循环遍历所有有效行数中的单元格,获得单元格中的数据

    for (int i = 1; i <= rowNum; i++) {

    Row row = sheet.getRow(i);

    String name = row.getCell(0).getStringCellValue();

    int age = (int) row.getCell(1).getNumericCellValue();

    Date date = row.getCell(2).getDateCellValue();

    //将获取的数据封装成对象

    Student st = new Student(name, age, date);

    //将封装的对象添加到List中

    impStudentList.add(st);

    }

    } catch (IOException e) {

    e.printStackTrace();

    }

    if (workbook != null) {

    try {

    workbook.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    return impStudentList;

    }

    /**

    * 读取服务器本地的Excel文件

    *

    * @param FILE_PATH(服务器本地文件路径)

    * @return 读取到的数据对象集合

    */

    public List redExcel(String FILE_PATH) {

    List stList = new ArrayList<>();

    Workbook workbook = null;

    try {

    //获取上传的Excel文件输入流,并将其传给workbook

    workbook = WorkbookFactory.create(new File(FILE_PATH));

    //获得Excel文件的第一个sheet

    Sheet sheet = workbook.getSheetAt(0);

    //获得Sheet下的最后一个有效行

    int rowNum = sheet.getLastRowNum();

    //循环遍历所有有效行数中的单元格,获得单元格中的数据

    for (int i = 1; i <= rowNum; i++) {

    Row row = sheet.getRow(i);

    String name = row.getCell(0).getStringCellValue();

    int age = (int) row.getCell(1).getNumericCellValue();

    Date date = row.getCell(2).getDateCellValue();

    //将获取的数据封装成对象

    Student st = new Student(name, age, date);

    //将封装的对象添加到List中

    stList.add(st);

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (workbook != null) {

    try {

    workbook.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return stList;

    }

    /**

    * 将读取到的上传数据写入到服务器本地的Excel

    *

    * @param FILE_PATH      服务器本地Excel路劲

    * @param impStudentList 要写入到Excel中的数据

    */

    public Workbook writeExcel(String FILE_PATH, List impStudentList) {

    Workbook workbook = null;

    InputStream fileInputStream = null;

    if (impStudentList != null) {

    try {

    fileInputStream = new FileInputStream(new File(FILE_PATH));

    workbook = WorkbookFactory.create(fileInputStream);

    Sheet sheet = workbook.getSheetAt(0);

    int lastRowNum = sheet.getLastRowNum();

    int index = 0;

    for (int i = lastRowNum + 1; i <= lastRowNum + impStudentList.size(); i++) {

    Row row = sheet.createRow(i);

    Student st = impStudentList.get(index);

    row.createCell(0).setCellValue(st.getName());

    row.createCell(1).setCellValue(st.getAge());

    row.createCell(2).setCellValue(st.getDate());

    index++;

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (fileInputStream != null) {

    try {

    fileInputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    }

    return workbook;

    }

    /**

    * 创建新的Excel提供下载

    * @param excelVersion excel版本

    * @param impStudentList 要写到Excel中的数据

    * @return Workbook对象

    */

    public Workbook exportExcel(boolean excelVersion, List impStudentList) {

    Workbook workbook = null;

    if (excelVersion) {

    workbook = new XSSFWorkbook();

    } else {

    workbook = new HSSFWorkbook();

    }

    Sheet sheet = workbook.createSheet();

    int lastRowNum = sheet.getLastRowNum();

    int index = 0;

    for (int i = lastRowNum + 1; i <= lastRowNum + impStudentList.size(); i++) {

    Row row = sheet.createRow(i);

    Student st = impStudentList.get(index);

    row.createCell(0).setCellValue(st.getName());

    row.createCell(1).setCellValue(st.getAge());

    row.createCell(2).setCellValue(st.getDate());

    index++;

    }

    return workbook;

    }

    }

    我的需求是这样的,在页面点击导出Excel的按钮,跳转到导出界面,界面显示的是我服务器本地一个Excel中的数据,然后点击“导出”,后台去服务器本地查找到这个Excel文件然后将他的写入一个Excel文件中(这个新建的Excel不在本地进行保存)然后将这个Excel文件提供用户下载!

    问题,我下载出来的文件没有后缀名,而且文件名和我自己定义的也不一样,请老师帮忙看看!

    c1a826984adde5c66561b3c97b0baeb3.png

    342be119cfc9e369c80bd178d127b19e.png

    展开全文
  • 主要介绍了js判断上传文件后缀名是否合法的具体方法,以一个完整实例分析了javascript判断上传文件后缀名是否合法的方法,感兴趣的小伙伴们可以参考一下
  • 易语言取本地后缀名文件图标模块源码,取本地后缀名文件图标模块,取后缀名图标_SHG,取后缀名图标_注册表,SHGetFileInfo,ExtractIconEx
  • 获取到JAVA的后缀名,集成到Util类,方便以后工作的时候调用!
  • 本篇文章给大家详细讲述了Java IO文件后缀名过滤的相关知识点,以及实例代码分享,有需要的朋友跟着小编一起学习下。
  • 批量改文件后缀名.zip

    2021-11-29 23:50:09
    选择文件夹 批量修改 指定的文件后缀为自定义的后缀
  • 文件后缀名大全.txt

    2021-11-03 22:46:45
    文件后缀名大全.txt
  • 批量修改文件后缀名为mp3,非常简单方便。把该文件下和需要批量修改文件放在同一个文件夹下,然后只需双击此文件即可。
  • 建立程序与文件的关联。从注册表的角度上来解决这个问题,因为程序关联其实就是在注册表上进行操作的。含CRegRelateExt 代码 。
  • * 获取文件后缀名,并判断是否合法 * * @param string $file_name * @param array $allow_type * @return blob */ function get_file_suffix($file_name, $allow_type = array()) { $file_suffix = strtolower...
  • 主要介绍了PHP实现获取文件后缀名的几种常用方法,通过三种不同的方法实例分析了php获取文件后缀名的实现技巧,分别通过字符串、文件属性及数组等方式实现这一功能,具有一定参考借鉴价值,需要的朋友可以参考下
  • 批量修改文件名软件,支持修改文件后缀名、增加序号、添加文字、改扩展名等。 批量修改文件名软件,支持修改文件后缀名、增加序号、添加文字、改扩展名等。 批量修改文件名软件,支持修改文件后缀名、增加序号、添加...
  • 个脚本可以实现指定目录下同名但不同后缀名的查找,可以拓展为删除指定的文件的脚本,觉得很实用,分享一下
  • 修改便以文件后缀名

    2017-06-29 10:20:11
    修改。so后缀名
  • 貌似这个问题有很多玩家遇到,微信官方说法是根据服务器响应的header中的Content-Type来决定下载到本地的文件的后缀的,但是这个特性支持的特别不好,如果下载后,文件后缀名为.unknown就不好搞了。 怎么解决的呢? ...

    引言

    微信文档里面有关下载文件的API的说明:
    在这里插入图片描述

    貌似这个问题有很多玩家遇到,微信官方说法是根据服务器响应的header中的Content-Type来决定下载到本地的文件的后缀的,但是这个特性支持的特别不好,如果下载后,文件后缀名为.unknown就不好搞了。

    怎么解决的呢?

     

    思路:

    第一步:

    利用wx.downloadFile下载文件,下载成功后,可以获取到tempFilePath临时文件。这个临时文件路径不要改动。

    第二步:

    利用wx.getFileSystemManager获取到FileSystemManager对象,利用该对象的saveFile方法,把临时文件保存为本地文件,保存成功后,其success函数回调会返回savedFilePath本地路径。这个路径会把上面的临时文件移动到这个本地路径中,但是后缀名仍然为unknown。这一步的目的是把临时文件保存为本地文件。

    第三步:

    本地文件已经有了,我们就可以对本地文件进行任意的操作。利用FileSystemManager对象的copyFile,把上面的后缀为unknown的本地文件,复制到另外的本地文件。这个时候你可以任意定义复制到的文件的后缀。

    有一点坑的是:上面第一步、第二步中的文件的路径(tempFilePath、savedFilePath)我们都是知道的,但是第三步中的复制到的目标路径需要开发者自己定义路径。

    这个时候我们需要用到wx.env.USER_DATA_PATH常量。 这个常量是微信为每个小程序小游戏搞得目录地址,在这个路径下面你可以新建、删除等文件或者文件夹。有这个知识储备,你可以先调用FileSystemManager对象的mkdir方法,在wx.env.USER_DATA_PATH常量路径下新建一个文件夹,然后你再调用第三步的copyFile就可以了。

    注意这里保存的文件路径,如果文件夹不存在,需要先调用mkdir创建文件目录,否则会失败。

    注:
    第二步和第三步可以合并。

    wx.downloadFile下载文件可以利用filePath指定下载的目标路径,这样可以省略上面的第二步操作,直接利用这个filePath进行第三步的复制操作,把后缀为unknown的filePath文件,复制到指定的文件后缀的目标文件中,然后就可以使用该文件了。


    有了以上分析过程,完美的文件下载过程应该是这样的:
     

    1 访问文件夹是否可用
    FileSystemManager.access({
           path: wx.env.USER_DATA_PATH + '/' + this.mFileDir,
           success: (res) => {
               console.log('check success:', res);
               checkSucHandler.run();
           },
           fail: (res) => {
               console.log('check fail.', res);
               checkFailHandler.run();
           }
       });
    

    如果文件夹可用,进入第3步。如果文件夹不可用,进入第2步创建文件夹。
    这里mFileDir表示开发者自定义的文件夹,检测这个文件夹是否可用
     

    2 创建文件夹
    this.mFileMgr.mkdir({
              dirPath: wx.env.USER_DATA_PATH + '/' + this.mFileDir,
              success: (res) => {
                  console.log('mk dir success:', res);
                  makeSucHandler.run();
              },
              fail: (res) => {
                  console.log('mk dir fail:', res);
                  makeFailHandler.run();
              }
      });
    

    开发者自定义的mFileDir文件夹不可用,就调用mkdir方法创建该文件夹。
     

    3 下载文件
    wx.downloadFile({
          url: url,
          header: '',
          filePath: wx.env.USER_DATA_PATH + '/' + this.mFileDir + '/' + fileName,
          success: (res) => {
              console.log('down load file. suc:', res);
              downloadSucHandler.run();
          },
          fail: (res) => {
              console.log('down load file. fail:', res);
              downloadFailHandler.run();
          },
      });
    

    这里把文件名为fileName的文件下载到开发者创建的mFileDir目录下面。

    这里fileName文件名是完全自定义的,这里在下载指定的文件时,就指定文件名后缀,而不是通过微信来指定文件后缀。这样处理之后,就不会出现文件后缀名为unknown的情况啦。

    以上,经过上面三步操作,就可以完美下载到文件啦。
     

    4 删除文件

    由于微信限制了微信小游戏小程序可用的空间大小50M。所以无用的文件需要尽早删除掉。

    this.mFileMgr.removeSavedFile({
           filePath: filePath,
           success: (res) => {
               console.log('remove save file. suc:', res);
               if (removeFileSucHandler) {
                   removeFileSucHandler.run();
               }
           },
           fail: (res) => {
               console.log('remove save file. fail:', res);
               if (removeFileFailHandler) {
                   removeFileFailHandler.run();
               }
           }
       });
    
    public unlinkSavedFile(filePath: string, removeFileSucHandler?: Laya.Handler,
                                        removeFileFailHandler?: Laya.Handler): void {
            this.mFileMgr.unlink({
                filePath: filePath,
                success: (res) => {
                    console.log('remove save file. suc:', res);
                    if (removeFileSucHandler) {
                        removeFileSucHandler.run();
                    }
                },
                fail: (res) => {
                    console.log('remove save file. fail:', res);
                    if (removeFileFailHandler) {
                        removeFileFailHandler.run();
                    }
                }
            });
        }
    

    微信文档里面提供了两种删除文件的方式。但是微信文档里面并没有说明这两种方法的区别,实际项目开发过程中发现,removeSavedFile方法在iOS上回出现删除文件不成功的现象,并且没有出错,方法也调用了,但是文件还在。而最后通过unlink方法删除文件则可以达到删除文件的目地。

    所以,推荐使用unlink方法删除文件。

    结束。
     

    完整工具类如下:
    export default class DownloadFileUtil {
        private mFileMgr: FileSystemManager;
        private mFileDir: string;
        constructor(fileDir: string) {
            this.mFileDir = fileDir;
            if (Laya.Browser.onWeiXin) {
                this.mFileMgr = wx.getFileSystemManager();
            }
        }
    
        public checkDir(checkSucHandler: Laya.Handler,
        		 checkFailHandler: Laya.Handler): void {
            if (!Laya.Browser.onWeiXin) {
                return;
            }
            //利用access方法判断文件是否可用
            this.mFileMgr.access({
                path: wx.env.USER_DATA_PATH + '/' + this.mFileDir,
                success: (res) => {
                    console.log('check success:', res);
                    checkSucHandler.run();
                },
                fail: (res) => {
                    console.log('check fail.', res);
                    checkFailHandler.run();
                }
            });
        }
    
        public mkDir(makeSucHandler: Laya.Handler,
        				 makeFailHandler: Laya.Handler): void {
            if (!Laya.Browser.onWeiXin) {
                return;
            }
            this.mFileMgr.mkdir({
                    dirPath: wx.env.USER_DATA_PATH + '/' + this.mFileDir,
                    success: (res) => {
                        console.log('mk dir success:', res);
                        makeSucHandler.run();
                    },
                    fail: (res) => {
                        console.log('mk dir fail:', res);
                        makeFailHandler.run();
                    }
            });
        }
    
        public downloadFile(url: string, fileName: string,
        					 downloadSucHandler: Laya.Handler,
        					 downloadFailHandler: Laya.Handler): void {
            if (!Laya.Browser.onWeiXin) {
                return;
            }
            wx.downloadFile({
                url: url,
                header: '',
                filePath: wx.env.USER_DATA_PATH + '/' + this.mFileDir + '/' + fileName,
                success: (res) => {
                    console.log('down load file. suc:', res);
                    downloadSucHandler.run();
                },
                fail: (res) => {
                    console.log('down load file. fail:', res);
                    downloadFailHandler.run();
                },
            });
        }
    
        public removeSavedFiles(): void {
            this.mFileMgr.getSavedFileList({
                success: (savedFiles) => {
                    console.log('saved files list:', savedFiles);
                    var fileList = savedFiles.fileList as Array<any>;
                    for(var i=0; i<fileList.length; i++) {
                        this.mFileMgr.removeSavedFile({
                            filePath: fileList[i].filePath,
                            success: (r) => {
                                console.log('remove save file. success:', r);
                            },
                            fail: (r) => {
                                console.log('remove save file. fail:', r);
                            }
                        });
                    }
                },
                fail: (res) => {
                    console.log('get saved file list. fail:', res);
                }
            });
        }
    
        public removeSavedFile(filePath: string, removeFileSucHandler?: Laya.Handler,
                                        removeFileFailHandler?: Laya.Handler): void {
            this.mFileMgr.removeSavedFile({
                filePath: filePath,
                success: (res) => {
                    console.log('remove save file. suc:', res);
                    if (removeFileSucHandler) {
                        removeFileSucHandler.run();
                    }
                },
                fail: (res) => {
                    console.log('remove save file. fail:', res);
                    if (removeFileFailHandler) {
                        removeFileFailHandler.run();
                    }
                }
            });
        }
    
        public unlinkSavedFile(filePath: string, removeFileSucHandler?: Laya.Handler,
                                        removeFileFailHandler?: Laya.Handler): void {
            this.mFileMgr.unlink({
                filePath: filePath,
                success: (res) => {
                    console.log('remove save file. suc:', res);
                    if (removeFileSucHandler) {
                        removeFileSucHandler.run();
                    }
                },
                fail: (res) => {
                    console.log('remove save file. fail:', res);
                    if (removeFileFailHandler) {
                        removeFileFailHandler.run();
                    }
                }
            });
        }
    }
    

    欢迎关注公众号:技术印象

    展开全文
  • MFC修改后缀名

    2018-06-05 21:47:50
    自己写的,实现了文件后缀名的修改,是用MFC实现的,界面做的不是很好

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 501,281
精华内容 200,512
关键字:

下载文件后缀名