0

ユーザーのプロフィール写真をフォルダーにアップロードし、そのパスを RavenDB に保存しています。しかし、私のコードでは、パスの一部が見つからないというエラーが表示されます。この行で

file.SaveAs(path);

コード:

    [HttpPost]
    public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
    {


        string email = User.Identity.Name;

        if (file != null && file.ContentLength > 0)
        {
            var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);
            var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
            file.SaveAs(path);

            using (var session = DocumentStore.OpenSession("RavenMemberShip"))
            {

                var query = from q in Session.Query<Registration>() where q.Email == email select q;
                if (query.Count() > 0)
                {
                    foreach (var updated in query)
                    {
                        fmanage.FileName = FileName;
                        fmanage.Path = path;
                        session.SaveChanges();

                    }
                }
            }
        }
        else ModelState.AddModelError("", "Remove the errors and try again");
        return View();
    }
4

3 に答える 3

0

パスに入力エラーがあります...

交換...

var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);

と...

var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), FileName);

また、このディレクトリに書き込むための適切な権限があることを確認する必要があります。

エラーに基づいて、ファイルパスが正しくないようです。

c:\users\wasfa\documents\visual studio 2012\Projects\MvcMembership\MvcMembership\App_Data\Uploads\daed3def-df2b-4406-aa‌ 9e-c1995190aa6d.image\jpeg

ファイル名はdaed3def-df2b-4406-aa‌ 9e-c1995190aa6d.image\jpeg ?

試す:

[HttpPost]
public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
{
    string email = User.Identity.Name;

    if (file != null && file.ContentLength > 0)
    {
        var FileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetFileName(file.FileName));            
        var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
        file.SaveAs(path);

        using (var session = DocumentStore.OpenSession("RavenMemberShip"))
        {

            var query = from q in Session.Query<Registration>() where q.Email == email select q;
            if (query.Count() > 0)
            {
                foreach (var updated in query)
                {
                    fmanage.FileName = FileName;
                    fmanage.Path = path;
                    session.SaveChanges();

                }
            }
        }
    }
    else ModelState.AddModelError("", "Remove the errors and try again");
    return View();
}
于 2013-09-27T08:11:28.403 に答える
0

var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);コード内の行を確認してください。

file.ContentType は、アップロードしているファイルの拡張子を返しません。daed3def-df2b-4406- aa‌9e-c1995190aa6d.image\jpegではなく、 daed3def-df2b-4406-aa‌ 9e-c1995190aa6d.jpeg のようにする必要があります。

部分文字列を使用して、アップロードされたファイルから拡張子を見つけます。

この助けを願っています

于 2013-09-27T08:51:18.470 に答える