2

画像とサムネイルをアップロードしようとしています。

web.configのアップロードパスを次のように設定しました<add key="UploadPath" value="/Images"/>

画像をアップロードすると、アプリケーションが含まれているハードドライブとフォルダのフルパスが取得されます|:

D:\Projects\Social\FooApp\FooApp.BackOffice\Images\image_n.jpg

しかし、私はただ欲しい/images/image_n.jpg

私が使っPath.Combineているのはその理由だと思いますか?

どうすればこれを解決できますか?

これはコードです|:\

foreach (var file in files)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        if (fileName != null) originalFile = Server.MapPath(upload_path) + DateTime.Now.Ticks + "_ " + fileName;


                        file.SaveAs(originalFile); 

                        images.Add(originalFile);
                    }
                }
4

2 に答える 2

6

HttpContext.Current.Server.MapPathを使用する必要があります。

Web サーバー上の指定された仮想パスに対応する物理ファイル パスを返します。

コードは次のようになります。

Path.Combine(HttpContext.Current.Server.MapPath("~/Images"), fileName);

*編集 - 上記で提供したコードに追加しています。このようになります。

foreach (var file in files)
{
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var uploadPath = "~/Images"; //This is where you would grab from the Web.Config. Make sure to add the ~

        if (fileName != null) {
            var originalFile = Path.Combine(HttpContext.Current.Server.MapPath(uploadPath), DateTime.Now.Ticks + "_ " + fileName);
            file.SaveAs(originalFile); 
            images.Add(originalFile);
        }
    }
}
于 2012-04-18T16:36:37.293 に答える
0

このコードはコントローラーの 1 つにあると思います。やってみました:

Server.MapPath(yourPath);
于 2012-04-18T16:34:59.707 に答える