minato128 blog

minato128の公開メモ帳です。

Windows だけで社内(または自分用)Gyazo 環境を構築する

巷ではExcelスクリーンショットエビデンスの話で盛り上がってますね。*1 スクリーンショットと言えばGyazoということで、少し前に調べたことをまとめてみました。*2

サーバー側

最初upload.cgiで環境作って動作確認までしたけど、 簡単そうだからASP.NET版作ろうかなと思って、まずググったら高機能なのがあったので使わせていただきました。感謝。

クライアント側

公式

アップロード処理をC#で実装する

C#でパラメーターのファイルパスの画像をアップロードするメソッドのサンプル(.NET 4.5)です。雑ですが一応動きます。

public async Task<string> UploadImageAsync(string imageFilePath)
{
    var gyazoUploadUrl = "http://your-gyazo-site-api";

    using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
    using (var memoryStream = new MemoryStream())
    using (var content = new MultipartFormDataContent())
    {
        var fileContent = new StreamContent(File.OpenRead(imageFilePath));
        fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
        content.Add(fileContent, "imagedata", "data.jpg");
        client.DefaultRequestHeaders.Add("User-Agent", "GyazoUploadSample/1.0");

        HttpResponseMessage response = await client.PostAsync(gyazoUploadUrl, content);
        if (response.IsSuccessStatusCode)
            return await response.Content.ReadAsStringAsync();
    }

    return "";
}

*1:もう終息気味?

*2:きっかけはRebuild: 47: Live From GitHub Kaigi (Naoya Ito)