0

「c:\inetpub\wwwroot\」にある「UploadedImages」という名前のフォルダーに画像を保存する必要があります。これが私のコードです:

         public string SaveImage(string base64,int compno)
{
    string res = "";
    try
    {

        using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64)))
        {
            using (Bitmap bm2 = new Bitmap(ms))
            {
                bm2.Save(Server.MapPath("~/UploadedImages/ID"+compno+".jpg"));
            }
        }
        res = "done";
    }
    catch (Exception ex) {
        res = ex.ToString();
    }
    return res;
}

しかし、「System.Drawing.Image.SaveでGDI +で一般的なエラーが発生しました」という例外がスローされます。私は何を間違っていますか?このコードは、画像をローカルに保存するときに正常に機能します

       bm2.Save("D:Embasy\UploadedImages\ID"+compno+".jpg"));

イメージを localhost ディレクトリに保存するには、どのような変更を加える必要がありますか?

4

3 に答える 3

0

Server.Mappathを使用している場合

bm2.Save(Server.MapPath("~/UploadedImages/ID"+compno+".jpg"));

"~(tield)" : プロジェクト/アプリケーションのルート フォルダーc:\inetpub\wwwroot\yourproject へのポイント

残りのパス /UploadedImages を見つけて、ID1.jpg を作成します。

ただし、イメージフォルダー「UploadImages」はc:\inetpub\wwwroot\yourproject ではなくd: にあります。

イメージ フォルダーを D: に配置する場合は、仮想ディレクトリを作成し、関連するパスを適用する必要があります。

于 2013-08-22T12:03:12.863 に答える
0

信じられないかもしれませんが、v1.1 を実行しているサイトには、イメージが保存されたディレクトリにマップされた仮想ディレクトリがセットアップされていました。問題なく動作しました。

v2.0 サイトにも同じ仮想ディレクトリ名がありましたが、物理パスが異なっていました。v1.0 サイトと同じディレクトリを指すようにパスを変更したところ、コードが機能するようになりました。

要するに、「パスが存在しなければならない」というのは正しかったということです。

System.Drawing 名前空間内のクラスは、Windows または ASP.NET サービス内での使用はサポートされていません。これらのアプリケーション タイプのいずれかからこれらのクラスを使用しようとすると、サービス パフォーマンスの低下やランタイム例外など、予期しない問題が発生する可能性があります。サポートされている代替手段については、「Windows イメージング コンポーネント」を参照してください。

このリンクを参照してください

http://msdn.microsoft.com/en-us/library/xs6ftd89.aspx

于 2013-08-22T11:30:50.097 に答える