画像を画像に含めるときに、データベースに新しいオブジェクトを作成する際に問題が発生します。ajax MVCで画像をアップロード
マイモデル:
public Dog()
{
public int Id { get; set; }
public string Name { get; set; }
public string DogImageUrl { get; set; }
}
私のHTMLコード:
@if (User.Identity.IsAuthenticated)
{
<h7>New Dog</h7>
<input id="dogName" type="text" placeholder="dog name" />
<input type="file" name="file" style="width: 100%;" />
<input id="createNewDog" type="button" value="Go" />
</div>
</div>
}
私のAjaxのポストコード: $( '#のaddNewDog')をクリックします(関数(E){
var imgToUpload = $("input[name=file]").get(0).files[0];
var data = {
"Name": $('#dogName').val(),
"DogImageUrl ": "nullForNow",
};
var url = "@Url.Action("NewDog", "Home")";
$.ajax({
url: url,
data: { model: data, file: Request.File[imgToUpload] },
cache: false,
type: "POST",
contentType: "multipart/form-data",
processData: false,
success: function (respone) {
alert(respone);
location.reload();
},
error: function (reponse) {
alert(reponse);
}
});
e.stopPropagation();
});
。
マイコン:
public ActionResult NewDog(Dog model, HttpPostedFileBase file)
{
using (var contex = new DogContext())
{
if (User.Identity.IsAuthenticated)
{
if (file != null)
{
try
{
if (file.ContentType == "image/jpeg")
{
if (file.ContentLength < 500000)
{
string pic = System.IO.Path.GetFileName(file.FileName);
string path = System.IO.Path.Combine(
Server.MapPath("~/Content/GroupImages"), pic);
// file is uploaded
file.SaveAs(path);
model.DogImageUrl = path;
}
}
}
catch (Exception ex)
{
return Content(ex.ToString());
}
}
contex.Dogs.Add(model);
contex.SaveChanges();
}
}
私のimgは常にnullになります。私はインターネット上のすべてを検索し、それを把握しませんでした。 私のデータベースのPATHを自分のイメージに保存するのが目的です。
1.クライアントのコンピュータから実際のパスを取得する可能性は低い - ブラウザはしばしば実際のパスを難読化する。 2.デバッグコンソールにスクリプトエラーがありますか? 3. [jQuery Ajaxファイルのアップロード](https://stackoverflow.com/questions/2320069/jquery-ajax-file-upload)およびその他の[MVC固有](https://stackoverflow.com/questions/29293637/)を参照してください。どのように追加することができますか?モデル全体をフォームデータに変換し、それをmvcで入手することができます。 – Jasen
@Jasenは、サーバーからのパスを保存し、ユーザーがイメージをアップロードし、それを自分のサーバーに保存し、 "DogImageUrl"でそのパスを取得したいと考えています。 –
2番目のリンクは、 。 – Jasen