跳到主要内容

deno文件下载及上传

文件下载


const downLoad = async (url, page, config) => {


console.log(`正下载第${page}`);
console.log(url);
const response = await fetch(url, {
method: "GET",
// responseType: 'stream'
headers: {
"Accept":
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",

"Host": "ttps://ostasien.digitale-sammlungen.de/",
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76",
// "Cookie": `${config?.headers?.Cookie}`,
},
});

let resHeaders = response.headers;

let mime = resHeaders.get("content-type");

if (mime == "image/jpeg") {
mime = "jpeg";
} else {
throw "下载失败" + mime;
}

let read = response.body;



const file = await Deno.open(`${"osFiles"}/${page}.${mime}`, {
create: true,
write: true,
});

await read?.pipeTo(file.writable, { preventClose: true });

file.close();
};


文件上传

const upload = async (filePath, sid) => {
let url = "https://www.filebig.net/cgi-bin/postfile.cgi";

let formData = new FormData();
formData.append("sid", sid);
// //发邮件邮箱
// formData.append("FromEmail", "");
// //收件人邮箱
// formData.append("ToEmail1", "");
// // 备注
// formData.append("MessageText", "");

let fileName = "";
if (filePath.includes("/")) {
fileName = filePath.split("/").pop();
} else if (filePath.includes("\\")) {
fileName = filePath.split("\\").pop();
} else {
fileName = filePath;
}
console.log(fileName);
let fileType = mime.getType(fileName);
console.log(fileType);

const fileBytes = await Deno.readFile(filePath);


const fileBlob = new Blob([fileBytes], { type: fileType });

formData.append("upfile", fileBlob, fileName);



//注意formData格式Content-Length与Content-Type会自动计算,一定不要设置
const resp = await fetch(url, {
method: "POST",

headers: {
// "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
// "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
// "Accept-Encoding": 'gzip, deflate, br',
// "Content-Length": formDataSize,
// "Content-Type": contentType,
"Origin": "https://www.filebig.net",
// "Referer": "https://www.filebig.net/",
"Host": "www.filebig.net",

},
body: formData,
});

const responseText = await resp.text();

// console.log("RAW BODY:", await resp.text());
if (responseText.includes("OK")) {
return responseText;
} else {
throw responseText;
}
};