将文件添加到数据库

时间:2014-07-14 13:28:10

标签: c# jquery

我正在尝试将文件添加到我的数据库中,但由于某些原因它无法正常工作,有人可以告诉我原因。这就是我的沙发:

        $(document).on("click", "#BUTTON", function () {
        var FILE= $('#name').val();

        $.ajax({
            type: "POST",
            dataType: 'json',
            url: "@Url.Action("File", "Controller")",
            data: JSON.stringify(FILE),
        contentType: "application/json; charset=utf-8",
        success: function () {

        }
    });
    });

这是我的控制器中发生的事情:

public ActionResult File(HttpPostedFileBase file)
    {
        if (file != null)
        {
            string pic = System.IO.Path.GetFileName(file.FileName);
            string path = System.IO.Path.Combine(Server.MapPath("~/path"), pic);
            // file is uploaded
            file.SaveAs(path);

            // save the image path path to the database or you can send image 
            // directly to database
            // in-case if you want to store byte[] ie. for DB
            using (MemoryStream ms = new MemoryStream())
            {
                file.InputStream.CopyTo(ms);
                byte[] array = ms.GetBuffer();
            }

        }
        // after successfully uploading redirect the user
        return Index();
    }
}

当我在行HttpPostedFileBase file中放置制动点时,文件具有空值我不知道为什么?如果我alert(FILE);,那么我将获得完整的文件路径,例如G:/filename/imagename.jpg但是在控制器中路径没有被传递?

2 个答案:

答案 0 :(得分:0)

您将无法以这种方式发布文件,您唯一要做的就是发布文本值,在这种情况下是文件名。

也许这可以帮助你(another example on stack overflow

答案 1 :(得分:0)

如果您要使用输入的文件集合,则可以执行此操作,因此请尝试使用它。我希望它会有所帮助

$(document).on("click", "#BUTTON", function(){

//Create form data
var data = new FormData(); 

//attach your file
data.append('file', document.getElementById("fileHere").files[0]); 

//and send it on server
$.ajax({
    url: "@Url.Action("File", "Controller")",
    data: data,
    cache: false,
    contentType: 'multipart/form-data',
    processData: false,
    type: 'POST',
    success: function(data){
            }
        });
    });