0

私は文字通りこれについてあらゆる方法を試しましたが、どうやら正しい方法を理解できないようです。

wordpress ブログにインストールされている次世代ギャラリーに画像をアップロードしようとしています。xml-rpc に関するすべてが機能しているため、他のすべてのことを実行できます。

問題は、サーバーが画像が有効でないというエラーを返すことです。問題がbase64に関するものであることは明らかです。ただし、テスト目的で、base64 文字列をコピーしてチェックしたところ、それが適切であることがわかりました。外部の base64 から画像へのコンバーターを使用して、画像に正しく変換されます。

これは、クエリを送信する行です。

    result = categories.newImage(1, "admin", "password", newImage);

newImage の構造体は次のとおりです。

    public struct imageI
    {
        public string name;
        public string type;
        public string bits;
        public bool overwrite;
        public int gallery;
        public int image_id;

    }

これは、画像をbase64に変換するとともに、新しい画像を初期化する方法です

        //Creating the image base64 string
        string filename = "asd.jpg";
        Image image1 = Image.FromFile(filename);
        string base64 = ImageToBase64(image1, image1.RawFormat);
        //for test purposes i copied and checked the base64 and it is just right, it converts right to the image using an external base64 to image converter.
        Clipboard.SetText(base64);

        //Creating a newImage 
        imageI newImage = default(imageI);
        newImage.name = "newImage";
        newImage.bits = base64;
        newImage.gallery= 86;

そして最後に、私のメソッド "ImageToBase64(Image, ImageFomat)";

    public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            // Convert Image to byte[]
            image.Save(ms, format);
            byte[] imageBytes = ms.ToArray();

            // Convert byte[] to Base64 String
            string base64String = Convert.ToBase64String(imageBytes);
            return base64String;

        }
    }
4

1 に答える 1

1

誰かがこれにぶつかった場合に備えて、私はそれを考え出しました。 newImage.name = "newImage"; ファイル名はアップロードするものと同じである必要があります。または、xml-rpc ファイルの関数が拡張子を解決し、アップロードしても問題ないかどうかを確認できるように、少なくとも拡張子が同じである必要があります。

于 2012-09-14T09:00:51.177 に答える