Member 14803832 Ответов: 0

Как перезаписать файл в базе данных с помощью ajax вызова


Я пытаюсь перезаписать старый файл новым с помощью ajax-вызова .Чистый MVC.
до сих пор я могу восстановить данные из БД, но понятия не имею, как сделать перезапись.

Кто-нибудь может мне помочь?

Что я уже пробовал:

Вот мой контроллер:

[HttpPost]
    public JsonResult UpdateFile(int id, HttpPostedFileBase postedFile)
    {
        byte[] bytes;
        using (BinaryReader br = new BinaryReader(postedFile.InputStream))
        {
            bytes = br.ReadBytes(postedFile.ContentLength);
        }

        using (FileDBEntities db = new FileDBEntities())
        {

            tblFile fupt = db.tblFiles.Where(x => x.id == id).FirstOrDefault();
            fupt.Name = Path.GetFileName(postedFile.FileName);
            fupt.ContentType = postedFile.ContentType;
            fupt.Data = bytes;

            db.SaveChanges();
            return Json(new { success = true }, JsonRequestBehavior.AllowGet);
        }
    }


и мой javascript:

function loadFileData() {
$.ajax({
    type: "GET",
    url: "/File/FileIndex",
    dataType: "JSON",
    success: function (data) {
        $.each(data, function (i, val) {
            var trow = $('<tr/>');
            var trowb = $('<tr/>').data("id", val.id);
            trow.append('<td colspan="2">' + val.Name + " " + '</td>');
            trowb.append('<td><input style="width:250px;" type="file" id="choose" /></td><td><input  type="button" value="upload" id="upload" /></td>');
          
            tab.append(trow);
            tab.append(trowb);
        });
        $("#showFiles").html(tab);
    },
    error: function () {
        alert("Failed! Please try again.");
    }
});
var tab = $('<table style="width:300px" border=1 class=MyTable></table>');


tab.on("click", "#upload", function (e) {
    //$('#uploadStatus').html("ok");
    var tr = $(this).closest("tr");
    var id = tr.data("id");
    var input = $('#choose').file;
    
  
    $.ajax({
        type: "POST",
        url: "/File/UpdateFile",
        dataType: "JSON",
        data: {
            id: id,
            pospostedFile: input
        },
        success: function (data) {
            $('#uploadStatus').html("ok");
            loadFileData();
        },
        error: function () {
            alert("Failed! Please try again.");
        }
    });

});


}


Debbuger говорит мне, что я посылаю "нуль" как "postedFile". Как я могу взять это значение из входных данных и передать его своему контроллеру?

F-ES Sitecore

Вы не можете загрузить файл через ajax таким образом. google для того, как вы загружаете файл через ajax, это очень хорошо документировано.

Member 14803832

Может быть, у вас есть какие-то полезные ссылки, я гуглю уже неделю, но не могу найти ничего, что может быть полезно в моем случае. Я уже сделал это без Аякса, но дальше идти не могу

F-ES Sitecore

Это был первый раз, когда я выпучил глаза на "c# upload file ajax", я уверен, что есть и другие лучшие

https://stackoverflow.com/questions/35783168/jquery-ajax-uploading-a-file-and-other-values-from-client-side

0 Ответов