Typora设置自动上传图片到图床

Typora设置自动上传图片到图床

方法一:使用php

打开设置界面:

自定义命令:

复制代码
php F:/WWW/php-library/TyporaUploadImage.php  ${filename}

php代码:

php 复制代码
# TyporaUploadImage.php
<?php
// Set the API endpoint URL
// $apiUrl = 'https://sm.ms/api/v2/upload';
$apiUrl = 'https://picui.cn/api/v1/upload';

// Set the API authorization header
// https://picui.cn/user/tokens bruce
$apiKey = '252|3n7rfRxagShT73kuJ8vNFrWpkd5XYsSH5uxxxx';  //这里输入你自己的apiKey
$headers = array(
    'Authorization:Bearer ' . $apiKey,
    'Accept: application/json',
    'Content-Type: multipart/form-data'
);

// Check if there are any image paths provided
if (count($argv) > 1) {
    echo "Upload Success:\n";
    for ($i = 1, $iMax = count($argv); $i < $iMax; $i++) {
        $imagePath = $argv[$i];
        $imageFileName = basename($imagePath);

        // Create the request data
        $data = array(
            'file' => new CURLFile($imagePath, mime_content_type($imagePath), $imageFileName)
        );

        // Initialize the cURL request
        $curl = curl_init($apiUrl);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        // Send the cURL request and get the response
        $response = curl_exec($curl);

        // Check for any cURL errors
        if (curl_errno($curl)) {
            echo 'cURL error (' . $i . '): ' . curl_error($curl) . "\n";
            continue;
        }

        // Decode the JSON response
        $responseData = json_decode($response, true);

        // Check if the upload was successful
        if ($responseData['status']) {
            echo $responseData['data']['links']['url'] . "\n";
        } else {
            echo 'Error (' . $i . '): ' . $responseData['message'] . "\n";
        }

        // Close the cURL connection
        curl_close($curl);
    }
} else {
    echo "Usage: php script.php <image_path1> <image_path2> ...\n";
}
?>

做完这些以后就能自动上传图片了,上面这个方法需要本地有php应用程序。

方法二:使用powershell

如果没有php程序,就直接使用windows自带的powershell吧:

复制代码
powershell -File F:/WWW/php-library/TyporaUploadImage.ps1 ${filename}

代码内容:

powershell 复制代码
# TyporaUploadImage.ps1
# 设置 API 端点 URL 和 API 密钥
$apiUrl = "https://picui.cn/api/v1/upload"
$apiKey = "252|3n7rfRxagShT73kuJ8vNFrWpkd5XYsSH5uzhQxx"

# 设置 HTTP 头
$headers = @{
    "Authorization" = "Bearer $apiKey"
    "Accept" = "application/json"
}

# 检查是否提供了图片路径
if ($args.Count -eq 0) {
    Write-Host "Usage: script.ps1 <image_path1> <image_path2> ..."
    exit
}

Write-Host "Upload Success:"

foreach ($imagePath in $args) {
    # 检查文件是否存在
    if (-Not (Test-Path $imagePath)) {
        Write-Host "Error: File '$imagePath' does not exist."
        continue
    }

    # 获取文件名和 MIME 类型
    $imageFileName = [System.IO.Path]::GetFileName($imagePath)
    $mimeType = Get-Content -Path $imagePath -AsByteStream | 
        . { New-Object System.IO.MemoryStream($_) } |
        . { Add-Type -AssemblyName System.Drawing; New-Object System.Drawing.Bitmap($_) } |
        . { $_.RawFormat.ToString() }

    # 创建 POST 数据
    $boundary = [System.Guid]::NewGuid().ToString()
    $contentType = "multipart/form-data; boundary=$boundary"

    $formData = @"
--$boundary
Content-Disposition: form-data; name="file"; filename="$imageFileName"
Content-Type: $mimeType

$(Get-Content -Raw -Path $imagePath)
--$boundary--
"@

    # 发送 HTTP POST 请求
    try {
        $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -ContentType $contentType -Body $formData
        if ($response.status -eq $true) {
            Write-Host $response.data.links.url
        } else {
            Write-Host "Error: " $response.message
        }
    } catch {
        Write-Host "Error uploading file '$imagePath': $_"
    }
}
相关推荐
Mr数据杨15 分钟前
【Codex】用学生支持周报模块跟踪个性化支持进展
android·java·javascript·django·codex·项目开发
名剑走天下22 分钟前
Android 面试题大全
android·kotlin
mmsx1 小时前
osmdroid 自定义地图视图:继承 MapView 的正确姿势与生命周期管理
android·osmdroid
ii_best2 小时前
移动开发工具按键精灵安卓版 OcrEx 识别总是漏字错字?改这一个参数,精度直接翻倍
android·ai编程·按键精灵
chjif3 小时前
Android 设备管控开发实战:自定义 Launcher 如何只显示指定 App?
android·kotlin
Dovis(誓平步青云)3 小时前
模拟器横评:电脑上看小说、追短剧用什么模拟器?MuMu、雷电、腾讯手游助手实测
android·java·服务器·前端·javascript·电脑
非凡ghost4 小时前
用 Kotlin 和 Jetpack Compose 重写的安卓视频播放器,原生体验有多流畅?
android·java·kotlin·音视频·软件需求
峥嵘life4 小时前
Android16 系统 APEX 模块调试总结
android·大数据·开发语言
亘元有量-流量变现4 小时前
2026安卓ASO增量攻略:摆脱iOS思维依赖,吃透多商店自然免费流量
android·aso优化·亘元有量·方糖试玩