上传文件到链滴图床

async function getFile(path) {
    return fetch("/api/file/getFile", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            path,
        }),
    }).then((response) => {
        if (response.ok) {
            // 返回 Blob 对象而不是文本
            return response.blob();
        } else {
            throw new Error("Failed to get file content");
        }
    }).catch((error) => {
        console.error(error);
    });
}

// 提取文件名的函数
function extractFileNameFromPath(filePath) {
    // 使用 split() 方法按 '/' 分割路径,取最后一部分
    const parts = filePath.split('/');
    return parts[parts.length - 1];
}

// 封装上传文件的函数
async function uploadFile(filePath, uploadUrl, authToken) {
    try {
        // 获取文件内容作为 Blob
        const fileBlob = await getFile(filePath);

        // 自动提取文件名
        const fileName = extractFileNameFromPath(filePath);

        // 创建 FormData 并添加文件
        const formdata = new FormData();
        formdata.append("file[]", fileBlob, fileName);

        // 设置请求头,包括 Authorization
        const myHeaders = new Headers();
        myHeaders.append("Authorization", `token ${authToken}`);
        myHeaders.append("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36");

        const requestOptions = {
            method: 'POST',
            headers: myHeaders,
            body: formdata,
            redirect: 'follow'
        };

        // 发送请求并解析响应为 JSON
        const response = await fetch(uploadUrl, requestOptions);
        const result = await response.json();

        // 返回上传结果
        return result;
    } catch (error) {
        console.error('Error:', error);
        throw error; // 抛出错误以便调用者处理
    }
}

// 调用示例
(async () => {
    try {
        const filePath = '/data/assets/image-20240506132258-jw0ztq7.png'; // 文件路径
        const uploadUrl = "https://ld246.com/upload/editor"; // 上传地址
        const authToken = ""; // 链滴社区授权令牌

        // 调用上传函数并获取结果
        const uploadResult = await uploadFile(filePath, uploadUrl, authToken);
        console.log('Upload Result:', uploadResult);
    } catch (error) {
        console.error('Upload Failed:', error);
    }
})();

image.png

留下你的脚步
推荐阅读