WeChat H5 ダウンロード ファイル、WeChat ブラウザがファイルをダウンロードできない解決策

携帯電話のWeChatがWebページにアクセスする場合、ファイルを直接ダウンロードすることは禁止されています

ただし、IOS 側では .txt/.doc/.docx/.xls/xlsx/.pdf などの形式のファイルをプレビューでき、Android 側がこれらの形式のファイルをダウンロードすると、「これからダウンロードします」というプロンプトが表示されることがあります。 WeChat を離れてブラウザで開きます
ここに画像の説明を挿入
。携帯電話 WeChat のこれらの制限に従って、Android WeChat があらゆる形式のファイルをダウンロードするときにブラウザを開いてファイルをダウンロードするプロンプトを表示できるように、ファイルをダウンロードするときに考慮してください。

1. ウェブコード

ジャンプする方法で実装することをお勧めします(注:WeChatを離れてブラウザで開いた場合、リンクアドレスは変更されません)

function download(id){
    
    
	//例如  http://localhost/app/file/download?id=123
	let url = BASEURL +'/file/download?id='+ id;
	window.location.href = url
}

2. Javaコード

Javaプログラム内でクライアントのブラウザ情報を判断し、携帯電話のWeChatかAndroidのWeChatかを判定する
ここではJFinalを使用します

	public void download() throws IOException {
    
    
        String id = getPara("id", "");
        if(StringUtils.isNotBlank(id)){
    
    
            Record fileRec = Db.findById("file_upload", id);
            //微信端返回一个默认假文件,使得唤起微信的‘在浏览器打开’
            if(isAndroidWechat(getRequest())){
    
    
                File file = new File("a.txt");
                if(!file.exists())
                    file.createNewFile();
                renderFile(file);
            }else{
    
    
                renderFile(new File(fileRec.getStr("save_path")), fileRec.getStr("file_name"));
            }
        }else{
    
    
            renderJson(err());
        }
    }


    /**
     * 客户端是否是Android微信浏览器
     * @param request
     * @return
     */
    public static boolean isAndroidWechat(HttpServletRequest request) {
    
    
        String userAgent = request.getHeader("user-agent");
        return userAgent != null 
            && userAgent.toLowerCase().indexOf("micromessenger") > -1
            && userAgent.toLowerCase().indexOf("wxwork") < 0
            && userAgent.toLowerCase().indexOf("android") > -1;
    }
    

おすすめ

転載: blog.csdn.net/qq_42049516/article/details/129874800