qiitaの画像アップロード上限対策
画像アップロードに上限がある
qiitaの画像アップロード上限に達してしまった
Payload Too Largeと表示され、画像がアップロードできなくなってしまった
Qiita Teamの導入
Qiita Teamに入れば画像アップロードが無制限になる。
しかし、これはQiita Team内での記事の画像アップロードが無制限なだけであって、投稿するQiitaの方の記事の画像アップロード上限は増えないようだ
外部Webサーバーに画像を置いて、リンクを記入する
外部にサーバーを持っているのであれば、画像をWebサーバーに置いてリンクを記入する
- Qiitaの記事(markdown)をテキストファイルで保存する
- Qiita Teamの記事を保存して、画像をダウンロードする
- 以下の可変の値を置き換えて実行すると、記事の画像URL,画像ファイルのリネームをしてくれる
- 画像ファイルを自分のサーバーにアップする
- Qiitaの記事を変換したURLの記事に置き換える
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
namespace QiitaTeamToMyServerURL
{
class Program
{
static void Main(string[] args)
{
// 変換の時刻の文字列取得
string convDateTimeStr = DateTime.Now.ToString("yyyyMMdd_hhmmss");
// 可変の値
// ドキュメント置き場のフルパス
string markdownDocDirPath = @"Qiita記事のmarkdonファイルを置いた場所のフルパス";
// 変換するファイル名
string srcFileName = @"document.txt";
// ダウンロードした画像のフォルダパス
string imagesDirPath = @"Qiita Teamからダウンロードした画像フォルダのフルパス";
// アップロードする為に画像をリネームしてコピーするフォルダパス
string uploadImageDirPath = @"画像をリネームして置くフォルダのフルパス";
// アップロードした際の画像を置くフォルダのURL
string replaceServerURL = "http://(リネームした画像をアップロードするURL)";
// 固定
// qiitaのコピペでアップした画像のURL
string replaceImageLineStr = "https://qiita-image-store.s3.amazonaws.com";
string documentResult = "";
int count = 0;
string line = "";
// パスの作成
string dstFileName = Path.GetFileNameWithoutExtension(srcFileName) + convDateTimeStr + Path.GetExtension(srcFileName);
string markdownDocFilePath = Path.Combine(markdownDocDirPath, srcFileName);
string dstFilePath = Path.Combine(markdownDocDirPath, dstFileName);
// フォーマットの作成
string replaceURLFormat = "![image](" + replaceServerURL + "/{0})";
string imageFileFormat = "Cnv_" + convDateTimeStr + "_{0:D4}{1}";
// 画像の移動先ディレクトリ作成
Directory.CreateDirectory(uploadImageDirPath);
// 画像ディレクトリのファイル一覧を取得
List<string> replaceImageLine = new List<string>();
DirectoryInfo imagesDirInfo = new DirectoryInfo(imagesDirPath);
List<FileInfo> imagesFiles = new List<FileInfo>();
imagesFiles.AddRange(imagesDirInfo.GetFiles());
StreamReader sr = new StreamReader(markdownDocFilePath);
while ((line = sr.ReadLine()) != null)
{
if(line.Contains(replaceImageLineStr))
{
for(int i=0; i< imagesFiles.Count; i++)
{
if(line.Contains(imagesFiles[i].Name))
{
string moveFileName = string.Format(imageFileFormat, count, Path.GetExtension(imagesFiles[i].FullName));
string moveFilePath = Path.Combine(uploadImageDirPath, moveFileName);
File.Copy(imagesFiles[i].FullName, moveFilePath);
line = string.Format(replaceURLFormat, moveFileName);
count++;
imagesFiles.RemoveAt(i);
break;
}
}
}
documentResult = documentResult + "\n" + line;
}
sr.Close();
// 結果を書き出す
StreamWriter sw = new StreamWriter(dstFilePath);
sw.WriteLine(documentResult);
sw.Close();
}
}
}
次の月まで制限が解除されるのを待つ
これが1番の対策のようだ