загрузка файла с использованием поля ввода - PullRequest
0 голосов
/ 05 марта 2020

Я создал веб-приложение, используя asp.net-mvc и Jquery

, когда я добавил приведенный ниже код, мое приложение автоматически перестало работать без каких-либо ошибок, я не знаю, является ли это моим visual studio 19 или IIS, который находится в аварийном состоянии

<label for="myfile">Select a file:</label>
<input type="file" id="myfile" name="myfile">

Чтобы проверить, я создал образец проекта asp.net mvc и вставил приведенный выше код на страницу индекса, но та же проблема возникает

Image

что я могу сделать, чтобы решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 05 марта 2020
<form id="upload">
<input type="file" id="file" class="form-control">
</form>

Jquery

$('#upload').submit(function (e) {
            e.preventDefault(); // stop the standard form submission
            var File_Name = $("#file").prop('files')[0].name;
            var ext = File_Name.split('.').pop();
            if (ext == "pdf" || ext == "docx" || ext == "doc" || ext == "png" || ext == 
                 "jpg" || ext == "jpeg" || ext == "txt") {
                var lastIndex = $("#file").prop('files')[0].name.lastIndexOf(".") + 1;
                var form = new FormData();
                form.append("file", $("#file").prop('files')[0]);
                $.ajax({
                    url: '/Main/SaveDocument',
                    type: 'POST',
                    data: form,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (data) {
                        console.log(data.UploadedFileCount + ' file(s) uploaded successfully');
                        if (data == "999") {
                            swal("Note", "Some Error Occurred. File Not uploaded successfully.", "error");
                        }

                    },
                    error: function (xhr, error, status) {
                        console.log(error, status + " " + xhr);
                    }
                });
            }
            else {
                swal("Note", "File Type Not Supported.", "warning");
            }

        });

C#

public ActionResult SaveDocument()
        {


            //file
            var file = System.Web.HttpContext.Current.Request.Files["file"];

            var CheckCnic = hr_FTPEntities.File_description.Where(x => x.uploader_CNIC == userCNIC).FirstOrDefault();
            if(CheckCnic == null)
            {
                HttpPostedFileBase filebase = new HttpPostedFileWrapper(file);

                if (filebase.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(filebase.FileName);

                    string path = Path.Combine(Server.MapPath(basePath + departmentName) + "/");

                    File_description file_Description = new File_description();
                    int fileCount = hr_FTPEntities.File_description.Select(x => x).ToList().Count + 1;

                    int lastIndexOfDot = fileName.LastIndexOf(".") - 1;
                    string finalFileName = fileName.Substring(0, lastIndexOfDot) + "_" + fileCount + fileName.Substring(lastIndexOfDot + 1);

                    file_Description.file_name = finalFileName.ToString();

                    try
                    {
                        filebase.SaveAs(path + (finalFileName));
                    }
                    catch(Exception ex)
                    {
                        return Json("999");
                    }

                }
                return Json("000");
            }
            else
            {
                return Json("888");
            }

        }
0 голосов
/ 06 марта 2020

Вы можете попробовать использовать следующий код:

Просмотр (Index.cs html):

            <input type="file" id="FileUpload1" />
            <input type="button" id="btnUpload" value="Upload Files" />

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script>

$(document).ready(function(){
    $('#btnUpload').click(function () {

        // Checking whether FormData is available in browser
        if (window.FormData !== undefined) {

            var fileUpload = $("#FileUpload1").get(0);
            var files = fileUpload.files;

            // Create FormData object
            var fileData = new FormData();

            // Looping over all files and add it to FormData object
            for (var i = 0; i < files.length; i++) {
                fileData.append(files[i].name, files[i]);
            }

            // Adding one more key to FormData object
            fileData.append('username', 'test');

            $.ajax({
                url: '/Home/UploadFiles',
                type: "POST",
                contentType: false, // Not to set any content header
                processData: false, // Not to process data
                data: fileData,
                success: function (result) {
                    alert(result);
                },
                error: function (err) {
                    alert(err.statusText);
                }
            });
        } else {
            alert("FormData is not supported.");
        }
    });
});
</script>

Контроллер (HomeController.cs):

  [HttpPost]
    public ActionResult UploadFiles()
    {
        // Checking no of files injected in Request object  
        if (Request.Files.Count > 0)
        {
            try
            {
                //  Get all files from Request object  
                HttpFileCollectionBase files = Request.Files;
                for (int i = 0; i < files.Count; i++)
                {
                    //string path = AppDomain.CurrentDomain.BaseDirectory + "Uploads/";  
                    //string filename = Path.GetFileName(Request.Files[i].FileName);  

                    HttpPostedFileBase file = files[i];
                    string fname;

                    // Checking for Internet Explorer  
                    if (Request.Browser.Browser.ToUpper() == "IE" || Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
                    {
                        string[] testfiles = file.FileName.Split(new char[] { '\\' });
                        fname = testfiles[testfiles.Length - 1];
                    }
                    else
                    {
                        fname = file.FileName;
                    }

                    // Get the complete folder path and store the file inside it.  
                    fname = Path.Combine(Server.MapPath("~/Uploads/"), fname);
                    file.SaveAs(fname);
                }
                // Returns message that successfully uploaded  
                return Json("File Uploaded Successfully!");
            }
            catch (Exception ex)
            {
                return Json("Error occurred. Error details: " + ex.Message);
            }
        }
        else
        {
            return Json("No files selected.");
        }
    }

Убедитесь, что на вашем сайте IIS есть папка для загрузки и достаточно разрешений для доступа к этой папке.

enter image description here

Если проблема не исчезла, попробуйте использовать другой браузер. проверьте журналы просмотра событий или попробуйте собрать дуп и проанализируйте дамп с помощью инструмента DebugDiag.

0 голосов
/ 05 марта 2020

Есть ли у вас

enctype="multipart/form-data"

свойство в элементе формы?

...