Как скачивать файлы с мобильного интернета? - PullRequest
1 голос
/ 16 апреля 2019

Я сделал возможность скачивать файлы. Код хорошо работает в веб-браузерах ПК, но не в мобильных веб-браузерах. Буду признателен, если вы знаете, как это работает на мобильном телефоне.

const filePath = findFile[0].path;
const fileName = findFile[0].filename;
const mimetype = mime.getType(filePath);
// Header setting
res.setHeader('fileName', encodeURIComponent(fileName));
res.setHeader('Content-type', mimetype);
res.setHeader('Content-Disposition', 'attachment; filename=' + encodeURIComponent(fileName));
// aws s3 file
const params = {
    Bucket: 'flag-kog',
    Key: `${username}/${fileName}`
};
s3.getObject(params)
    .createReadStream()
    .pipe(res);
componentDidMount() {
    const {
        username,
        flagname
    } = this.props.match.params;
    axios({
            url: `/api/files/download/${username}/${flagname}`,
            method: 'GET',
            responseType: 'blob',
        })
        .then(res => {
            const filename = decodeURIComponent(res.headers.filename);
            this.setState({
                filename,
            });
            // Download
            const url = window.URL.createObjectURL(new Blob([res.data]));
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download', filename);
            document.body.appendChild(link);
            link.click();
            this.setState({
                downloading: true,
            });
        })
        .catch(() =>
            this.setState({
                err: true,
            })
        );
}

1 Ответ

1 голос
/ 16 апреля 2019

Попробуй один раз !! это работает.

• Например: Если вы хотите скачать изображения или файлы, нажмите на ссылку «скачать».

(от onClick предотвратить jquery)

HTML-код: где находится ваш код ввода.

<a><img src="XYZ" /></a>
<p>file name</p>
<a href="XYZ" @click.prevent="_downloadImg('{{downLoad}}','file name')">Download</a>

Код запроса:

_downloadImg(src,alt){      
    var url = src;
    var fileName = alt;     
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.responseType = "blob";
    xhr.onload = function(){
        var urlCreator = window.URL || window.webkitURL;
        var imageUrl = urlCreator.createObjectURL(this.response);
        var tag = document.createElement('a');
        tag.href = imageUrl;
        tag.download = fileName;
        document.body.appendChild(tag);
        tag.click();
        document.body.removeChild(tag);          
    }
    xhr.send();
}
...