Загруженный файл не загружается, если имя файла содержит круглые скобки () - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть элемент управления FileUpload, куда я загружаю файлы PDF, и они сохраняются в папке, путь к файлу сохраняется в базе данных.

Проблема заключается в том, что я загружаю файл, который содержит скобки () в видечасть имени файла возвращает неопределенное значение.Это происходит только в том случае, если имя файла имеет круглые скобки (), если у него нет круглых скобок (), оно загружается нормально.

Это мой код

var filePaths;
function UploadFile() {

    var fileUpload = document.getElementById("fuPDFupload");
    var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:])+(.jpg|.png|.pdf)$");
    if (regex.test(fileUpload.value.toLowerCase())) {

        //Check whether HTML5 is supported.
        if (typeof (fileUpload.files) != "undefined") {
            //Initiate the FileReader object.
            var reader = new FileReader();
            //Read the contents of Image File.
            reader.readAsDataURL(fileUpload.files[0]);
            reader.onload = function (e) {
                //Initiate the JavaScript Image object.
                var image = new Image();

                //Set the Base64 string return from FileReader as source.
                image.src = e.target.result;


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

                var data = new FormData();
                for (var i = 0; i < files.length; i++) {
                    data.append(files[i].name, files[i]);
                }

                $.ajax({
                    url: "FileUploadHandler.ashx",
                    type: "POST",
                    data: data,
                    contentType: false,
                    processData: false,
                    success: function (result) {
                        filePaths = result;
                        //Save to DB
                        UpdateSchedule();
                    },
                    error: function (err) {
                    }
                });
                return true;
            };


        } else {
            alert("This browser does not support HTML5.");
            return false;
        }
    } else {
        return false;
    }

}

FileUploadHandler Код:

public class FileUploadHandler : IHttpHandler {

    public void ProcessRequest(HttpContext context)
        {
            if (context.Request.Files.Count > 0)
            {
                string filePaths = Guid.NewGuid().ToString() + ".pdf";
                HttpPostedFile file = context.Request.Files[0];
                string path = context.Server.MapPath("~/QfrencyInvoices/" + filePaths);
                file.SaveAs(path);

                context.Response.ContentType = "text/plain";
                context.Response.Write(filePaths);
            }
        }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

Я полагаю, что проблема может быть в том, что выражение Regex неверно, но я не смог ее исправить.Пожалуйста, помогите мне, как я могу загрузить файлы с круглыми скобками () как часть имени файла.Спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

Просто оставьте следующее регулярное выражение new RegExp("(\.(jpg|png|pdf)$", "i");.Он проверяет, что имя файла имеет расширение jpg, png или pdf.Текстовый регистр не имеет значения, поэтому в качестве второго параметра было добавлено «i».

Вы можете узнать регулярные выражения для https://regexone.com/

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