webman的download并不能实现文件自动下载

ysian

问题描述

通过ajax请求到webman没有实现浏览器自动下载
请求之后,控制台显示
截图

为此你搜索到了哪些方案及不适用的原因

不知道啥原因,如果webman的这种方式不能实现,是否有其他的方式,目前我可以返回路径给前端,然后通过前端进行下载;除此之外是否还有其他方式

public function imgToIco()
    {
        $url = request()->input('url');
        $size = request()->input('size',32);
        $url = '/temporary/20231017/1697524708.jpeg';

        $path = public_path().$url;

        // 清除输出缓冲区建一个新Imagick对象
        $imagick = new Imagick();

        // 读取图像
        $imagick->readImage($path);

        // 缩放图像到32x32像素
        $imagick->thumbnailImage($size, $size, true);

        // 设置ICO文件的格式
        $imagick->setImageFormat('ico');

        // 保存ICO文件
        $savePath = public_path().'/temporary/output.ico';
        $imagick->writeImages($savePath, true);
        //unlink($path);

        return response()->download($savePath, 'favicon.ico');
    }

前端下载代码

 $('#convertBtn').on('click', function() {
            // 获取选择的图片尺寸
            var imageSize = $("input[name='imageSize']:checked").val();
            var url = $('#previewImage').attr('src');
            $.ajax({
                type: 'get', // 请求类型(可根据需要更改)
                url: '/blog/index/imgToIco', // Ajax请求的目标URL
                data: {
                    'size':imageSize,
                    'url':url,
                    'next':'next'
                },
                success: function (response) {

                },
                error: function (xhr, status, error) {

                }
            });
        });
431 2 0
2个回答

six

ajax不支持下载文件到本地,这和webman无关

hon陈烁临

用 iframe 打开下载地址就行

  • ysian 2023-10-18

    嗯,我直接window.loaction.href就可以了,写了一个在线图片转ico的小工具

🔝