qiitaの画像アップロード上限対策

# qiitaの画像アップロード上限対策

## 画像アップロードに上限がある
qiitaの画像アップロード上限に達してしまった
Payload Too Largeと表示され、画像がアップロードできなくなってしまった

![20170319_qiita_upload_limit.png](https://qiita-image-store.s3.amazonaws.com/0/171071/7863cac5-d0f4-5891-e0a8-f94b5c95145c.png)

## Qiita Teamの導入

Qiita Teamに入れば画像アップロードが無制限になる。
しかし、これはQiita Team内での記事の画像アップロードが無制限なだけであって、投稿するQiitaの方の記事の画像アップロード上限は増えないようだ

## 外部Webサーバーに画像を置いて、リンクを記入する
外部にサーバーを持っているのであれば、画像をWebサーバーに置いてリンクを記入する

1. Qiitaの記事(markdown)をテキストファイルで保存する 
2. Qiita Teamの記事を保存して、画像をダウンロードする
3. 以下の可変の値を置き換えて実行すると、記事の画像URL,画像ファイルのリネームをしてくれる
4. 画像ファイルを自分のサーバーにアップする
5. Qiitaの記事を変換したURLの記事に置き換える

```CSharp: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番の対策のようだ