欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Typora设置自动上传图片到图床

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

2025/6/6 14:22:18 来源:https://blog.csdn.net/zhezhebie/article/details/144220279  浏览:    关键词:Typora设置自动上传图片到图床

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

方法一:使用php

打开设置界面:

image-20241203172020158

自定义命令:

php F:/WWW/php-library/TyporaUploadImage.php  ${filename}

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 errorsif (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 successfulif ($responseData['status']) {echo $responseData['data']['links']['url'] . "\n";} else {echo 'Error (' . $i . '): ' . $responseData['message'] . "\n";}// Close the cURL connectioncurl_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}

代码内容:

# 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 $formDataif ($response.status -eq $true) {Write-Host $response.data.links.url} else {Write-Host "Error: " $response.message}} catch {Write-Host "Error uploading file '$imagePath': $_"}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词