Mac*_*ann 3 javascript api share file sharing
Hy 我想与新的 api 共享图像。如果我有一个文件的上传表单,我可以与 api 共享该文件,我在尝试共享本地文件时会头疼。这是我的尝试:
function sharePage(){
const title = document.title;
var filesArray = [];
$.get(baseurl+"images/cover.jpg", { async: false }, function(data) { filesArray.push(data); });
setHashtag('share');
if(navigator.share){
if(navigator.canShare && navigator.canShare({ files: filesArray })) {
navigator.share({
text: 'FILE',
files: filesArray,
title: title,
url: baseurl
});
}else{
navigator.share({
text: 'NO FILE',
title: title,
url: baseurl
});
}
}else{
document.location.href="whatsapp://send?text="+baseurl;
}
Run Code Online (Sandbox Code Playgroud)
编辑:问题是,我不知道要为此脚本实现服务器端文件,例如 var file = baseurl+"images/cover.jpg"; 我尝试使用 jquery $.get 但它不起作用
小智 15
我通过请求一个 blob 并生成一个 File 对象来让它工作。像这样:
fetch("url_to_the_file")
.then(function(response) {
return response.blob()
})
.then(function(blob) {
var file = new File([blob], "picture.jpg", {type: 'image/jpeg'});
var filesArray = [file];
if(navigator.canShare && navigator.canShare({ files: filesArray })) {
navigator.share({
text: 'some_text',
files: filesArray,
title: 'some_title',
url: 'some_url'
});
}
}
Run Code Online (Sandbox Code Playgroud)
与带有 async/await 的 TypeScript 相同(假设您检查navigator.share可用):
const image = await fetch(imageUrl);
const blob = await image.blob();
const file = new File([blob], 'image.jpg', { type: 'image/jpeg' });
navigator.share({ text: 'some_text', files: [file] } as ShareData);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |