FileReader文件下载

此篇博客介绍了如何使用AJAX技术通过两次请求实现文件下载,首先获取文件令牌,然后根据不同文件类型转换为Blob对象并通过FileReader读取并触发下载。重点在于处理.docx和.xls文件的转换及下载操作。
function jumpDownloadInfo(ele){
    var fileId = $(ele).attr('fileId');
    var originalFileName = $(ele).attr('originalFileName');
    var type = $(ele).attr('type');
    $.ajax({
        url:url1,
        type:'get', 
        success:function(data){
            if(data.success){
                var tokenCont = data.message;
                $.ajax({
                    url:url2+fileId,
                    type:'get', 
                    beforeSend: function (request) {
                        request.setRequestHeader("Authorization", tokenCont);
                    },
                    xhrFields: { responseType: 'blob' },
                    success:function(data){
                        if(data){
                            if(type == '.docx' || type == '.doc'){
                                var blob =new Blob([data], {type: 'application/msword'});  
                            }
                            if(type == '.xls' || type == '.xlsx'){
                                var blob =new Blob([data], {type: 'application/vnd.ms-excel'});  
                            }
                            
                            // FileReader主要用于将文件内容读入内存
                            var reader = new FileReader();
                            reader.readAsDataURL(blob);
                            console.log(reader)
                            
                            // onload当读取操作成功完成时调用
                            reader.onload = function(e) {
                              
                                // 获取文件名fileName
                                var a = document.createElement('a');
                                // 获取文件名fileName
                                a.download = originalFileName;
                                a.href = e.target.result;
                             

                                document.body.appendChild(a);
                                a.click();
                                document.body.removeChild(a);
                               
                            }
                        }
                    }
                })
               

            }else{
                
            }
        }
    })
}
FileReader 主要用于读取文件内容,本身并不具备文件下载功能,因此不存在指定下载路径的说法。 在前端,FileReader 用于读取本地文件内容,如将文件读取为 DataURL 格式等,操作的是已存在于本地的文件,并非进行文件下载操作。例如在 Vue 中使用 FileReader 读取文件内容: ```javascript <script setup> const add = e => { console.log('e', e); console.log('e.target.files', e.target.files); const file = e.target.files[0]; let reader = new FileReader(); console.log('reader', reader); reader.readAsDataURL(file); reader.onload = e => { console.log('e----', e); } } </script> ``` 这里的 FileReader 只是将用户选择的本地文件读取为 DataURL 格式,而不是下载文件[^3]。 在 Java 里,FileReader 是用于从文件中读取字符流的类,同样不是用于文件下载的。例如使用 FileReader 读取文件内容: ```java import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Test99 { public static void main(String[] args) { FileReader fr = null; try { fr = new FileReader("a.txt"); int len; char [] cha = new char[2]; while ((len= fr.read(cha))!=-1){ System.out.println(new String(cha,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 此代码只是从指定文件中读取字符并输出,不涉及文件下载和指定下载路径的操作[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值