0

デバッグ/テスト中に、アップロードされた着信画像を開発マシンの ~/Content に保存しようとしましたが、そこにファイルが転送されていません。フォルダに画像を保存/転送することはできますか、それとも ~/App_Data に保存する必要がありますか?


編集:私が使用しているコード:

public ActionResult(AdminGameEditModel formData)
{
    Game game = new Game();

    AutoMapper.Mapper.Map<AdminGameEditModel, Game>(formData, game);

    if (formData.BoxArt.ContentLength > 0 && formData.IndexImage.ContentLength > 0)
    {
        var BoxArtName = Path.GetFileName(formData.BoxArt.FileName);
        var BoxArtPath = Path.Combine(Server.MapPath("~/Content/Images/BoxArt"), BoxArtName);
        game.BoxArtPath = BoxArtPath;
        formData.BoxArt.SaveAs(BoxArtPath);

        var IndexImageName = Path.GetFileName(formData.IndexImage.FileName);
        var IndexImagePath = Path.Combine(Server.MapPath("~/Content/Images/GameIndexImages"), IndexImageName);
        game.IndexImagePath = IndexImagePath;
        formData.IndexImage.SaveAs(IndexImagePath);
    }

    // rest of controller method
}

どちらのファイルもHttpPostedFileBaseオブジェクトです。私が現在使用しているサーバーは、VS デバッグ中に実行される ASP.NET サーバーです。

4

2 に答える 2

2

ディスク上の好きな場所に画像やファイルをコピー/保存できます。
IIS プロセスがフォルダーにアクセスできるかどうかのみを確認する必要があります。
アップロードしたファイルを配置するカスタム フォルダーを作成する傾向があります。

于 2011-05-26T13:39:38.170 に答える
1

アップロードしたファイルは、選択した任意のディレクトリに保存できるはずです。問題は、ASP.NET が実行されているサービス アカウントに、そのフォルダーへの書き込みアクセス許可があることを確認することです。IIS 7 以降の場合、サーバーの Network Service アカウントである可能性があります。確かに、IIS でサイトが実行されているアプリケーション プールを見て、それが実行されている ID を確認してください。


アップデート:

分かりました。これを試して、そのタイプの SaveAs メソッドに問題があるかどうかを確認できます (一部の人が問題を抱えていることを覚えています)。

それ以外の:

formData.BoxArt.SaveAs(BoxArtPath);

試す:

using (var output = new FileStream(BoxArtPath, FileMode.CreateNew)) {
  var data = new byte[formData.BoxArt.ContentLength];
  formData.BoxArt.InputStream.Read(data, 0, data.Length);
  output.Write(data, 0, data.Length);
}
于 2011-05-26T13:39:06.160 に答える