LoginSignup
2
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-18

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

画像アップロードに上限がある

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

20170319_qiita_upload_limit.png

Qiita Teamの導入

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

外部Webサーバーに画像を置いて、リンクを記入する

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

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

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0