1

現在、撮ったスクリーンショットをアップロードする簡単な写真アップロード機能を作ろうとしています。このウェブサイト dumpyourphoto.com を見つけましたが、C# でそれを行う方法がよくわかりません。誰でもこれを案内できますか?

基本的に必要なのは、スクリーンショットの写真をサーバーにアップロードすることだけです。うまくいけば、その写真への URL が返されます。そこから、この URL をセットアップ済みの OpenShift データベースにアップロードし、テキストとしてアップロードして、リンクをデータベースに保存します。

右。サイモンさん、質問ありがとうございます。あまり詳しく書いていないことに気づきました。

だから基本的に私はkinectを使ってスクリーンショットを撮りました。これは私が使っている機能です。

private void btn_ss_Click(object sender, RoutedEventArgs e)
    {
        // create a png bitmap encoder which knows how to save a .png file
        BitmapEncoder encoder = new PngBitmapEncoder();

        // create frame from the writable bitmap and add to encoder
        encoder.Frames.Add(BitmapFrame.Create(this.colorBitmap));

        string time = System.DateTime.Now.ToString("hh'-'mm'-'ss", CultureInfo.CurrentUICulture.DateTimeFormat);

        string myPhotos = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

        string path = System.IO.Path.Combine(myPhotos, "KinectSnapshot-" + time + ".png");

        // write the new file to disk
        try
        {
            using (FileStream fs = new FileStream(path, FileMode.Create))
            {
                encoder.Save(fs);
            }

            this.ss_dis.Text = string.Format("{0} {1}", "Screenshot has been taken.", path);
        }
        catch (IOException)
        {
            this.ss_dis.Text = string.Format("{0} {1}", "Failed to take Screenshot.", path);
        }
    }

私が苦労しているのは、これまで HttpWebRequest 関数などの Web アクティビティを実際に扱ったことがなく、Web サイトに xml と json が表示されていることです。私はそれを行う方法について少し考えていますが、よくわかりません。これは、開発者 API へのリンクです。 http://www.dumpyourphoto.com/information/api

更新: 自分で解決しようとしましたが、この最後の部分で行き詰まっています。bytearray とキーを HttpWebRequest にアタッチする方法がわかりません。

 private byte[] imgToByteArray(string _FileName)
    {
        byte[] _buffer = null;

        try
        {

            System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            System.IO.BinaryReader _BinaryReader = new System.IO.BinaryReader(_FileStream);

            long _TotalByte = new System.IO.FileInfo(_FileName).Length;
            _buffer = _BinaryReader.ReadBytes((Int32)_TotalByte);

            _FileStream.Close();
            _FileStream.Dispose();
            _BinaryReader.Close();
         }
        catch(Exception _Exception)
        {
            Console.WriteLine("Exception caught in process: {0}", _Exception.ToString());
        }

        return _buffer;
    }

これは Image to ByteArray 関数です。

private void button1_Click(object sender, RoutedEventArgs e)
    {
        string imgPath = "C:\\KinectSnapshot-04-46-14.png";
        string key = "1d533e9033f9d5b9b509055d8a00932aaf1ace7f";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.dumpyourphoto.com/api/upload_photo/xml");
        string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "KinectSnapshot-" + "03-38-28" + ".png");

        byte[] img = imgToByteArray(path);
        request.Method = "POST";
        request.Credentials = CredentialCache.DefaultCredentials;
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = img.Length;
        using(Stream dataStream = request.GetRequestStream())
            dataStream.Write(img, 0, img.Length);

        using (WebResponse response = request.GetResponse()) 
        using(Stream responseStream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(responseStream))
        {
            string responseResults = reader.ReadToEnd();
            Console.WriteLine(responseResults);
        }
 }

更新:これが私が現在いるところです。2つの問題が残っています。キーファイルとアップロードした画像のタイトルをどこに添付すればよいかわかりません。誰でもこれについて教えてもらえますか?

私が得ることができる助けを本当に感謝します!

4

1 に答える 1

0

HttpWebRequestを使用して、APIにリストされているメソッドを使用してPOSTリクエストを作成します。あなたが苦労している特定の何かがありますか?

于 2012-07-26T04:18:14.533 に答える