微信下载文件并打开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
downFile(e) {
        const that = this;
        const { eindex, ext } = $data(e)
        const apiUrl = this.$getApiUrl();
        var url = apiUrl + "/WebApi/ShareFile/Download/" + eindex;
        wx.showModal({
            title: '提示',
            content: '确定要下载吗?',
            success(res) {
                if (res.confirm) {
                    that.downFile2(url, ext);
                }
            }
        })
    },
    downFile2(url, ext) {<br>    //ext是扩展名,格式如.jpg
        wx.showLoading({
            title: '下载中...'
        });
        let fileNameTime = new Date().valueOf() + ext;
        //  fileNameTime = fileNameTime + ext;
        let filePath = wx.env.USER_DATA_PATH + '/' + fileNameTime;
        //wx.downloadFile方法:下载文件资源到本地
        let header = http.getHeader(); //这里有带token验证,不用的可以去掉
        wx.downloadFile({
            url: url,  //图片地址
            filePath: filePath,
            header: header,
            success: function(res) {
                wx.hideLoading({});
                var isImg = ext.indexOf('.png') >= 0 || ext.indexOf('.jpg') >= 0 || ext.indexOf('.jpeg') >= 0 || ext.indexOf('.bmp') >= 0 || ext
                    .indexOf('.gif') >= 0;
 
                if (isImg) {
                    //wx.saveImageToPhotosAlbum方法:保存图片到系统相册
                    wx.saveImageToPhotosAlbum({
                        filePath: res.filePath, //图片文件路径
                        success: function(data) {
                            wx.hideLoading(); //隐藏 loading 提示框
                            wx.showToast({ title: '下载完成', icon: 'success', duration: 2000 });
                        },
                        // 接口调用失败的回调函数
                        fail: function(err) {
                            if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg ===
                                "saveImageToPhotosAlbum:fail authorize no response") {
                                wx.showModal({
                                    title: '提示',
                                    content: '需要您授权保存相册',
                                    modalType: false,
                                    success: modalSuccess => {
                                        wx.openSetting({
                                            success(settingdata) {
                                                console.log("settingdata", settingdata)
                                                if (settingdata.authSetting['scope.writePhotosAlbum']) {
                                                    wx.showModal({
                                                        title: '提示',
                                                        content: '获取权限成功,再次点击图片即可保存',
                                                        modalType: false,
                                                    })
                                                } else {
                                                    wx.showModal({
                                                        title: '提示',
                                                        content: '获取权限失败,将无法保存到相册哦~',
                                                        modalType: false,
                                                    })
                                                }
                                            },
                                            fail(failData) {
                                                console.log("failData", failData)
                                            },
                                            complete(finishData) {
                                                console.log("finishData", finishData)
                                            }
                                        })
                                    }
                                })
                            } else {
                                wx.showToast({ title: '保存失败:' + err.errMsg, icon: 'none', duration: 2000 });
                                console.log("err", err.errMsg)
                            }
                        },
                        complete(res) {
                            wx.hideLoading(); //隐藏 loading 提示框
                        }
                    })
                } else {
                    wx.openDocument({
                        filePath: filePath,
                        showMenu: true,//一定要配置为true,页面右上角才会有3个点,点那里可以提示保存到手机的
                        success: function(res) {
                            console.log('打开文档成功')
                        }
                    })
                }
            },
            fail: function(res) {
                wx.hideLoading({});
                console.info(ees);
            }
        })
    },

  

.net 6 返回文件流给接口下载

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[HttpGet]
       public async Task<FileResult> Download(long id)
       {
           var dto = await _shareFileService.GetDtoById(id);
           if (dto == null)
               throw Oops.Bah("找不到该文件");
 
           var file = App.WebHostEnvironment.ContentRootPath + dto.FilePath;
           if (!FileHelper.IsFileExist(file))
               throw Oops.Bah("找不到该文件");
 
 
           var fileName = Path.GetFileName(file);
 
           //因为不知道文件是什么类型的,所以使用ContentDisposition
           var cd = new ContentDisposition
           {
               FileName = fileName,
               Inline = false
           };
           App.HttpContext.Response.Headers.Add("Content-Disposition", cd.ToString());
 
           FileStream stream = new FileStream(file, FileMode.Open);
 
           var actionresult = new FileStreamResult(stream, MediaTypeNames.Application.Octet);
           actionresult.FileDownloadName = fileName;
           return actionresult;
       }

  

posted @   evemen  阅读(325)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示