форма с многократной загрузкой, но не позволяет загружать при проблемах редактирования - PullRequest
0 голосов
/ 27 марта 2010

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

Я создал это для загрузки файлов:

public void UploadFiles(string currentFileName, FormCollection form)
    {   // loop through all files in form post
        foreach (string file in Request.Files)
        {
            HttpPostedFileBase hpf = Request.Files[file];
            // if no file is uploaded, we could be editing so set to current value
            if (hpf.ContentLength == 0)
            {
                form[file] = currentFileName;
            }
            else
            {   //rename the file unique so we dont clash with names
                var filename = hpf.FileName.Replace(" ", "_").Replace(".", DateTime.Now.Date.Ticks + ".");

                UploadFileName = filename;
                hpf.SaveAs(Server.MapPath("~/Content/custom/" + filename));
                // set the name of the file in our post to the new name
                form[file] = UploadFileName;
            }

        }

        // ensure value is still sent when no files are uploaded on edit
        if(Request.Files.Count <= 0)
        {
            UploadFileName = currentFileName;
        }
    }

все работает нормально, когда требуется только одно изображение (CurrentFileName), однако теперь имеется новое доступное изображение, которое переносит его на 2 изображения в базе данных, так как currentFileName устарело. Кто-нибудь справился с этим и как я ударил стену этим. думал о string [] currentFiles, но не вижу, как сопоставить это с строковым файлом в Request.Files.

если это поможет, я также работаю с моделями для формы, чтобы я мог обойти модель, но я не думаю, что вы сможете сделать model.file без какого-либо отражения.

помощь очень ценится.

спасибо

1 Ответ

0 голосов
/ 27 марта 2010

решение в конечном итоге выпрямило мою голову

public void UploadFiles(FormCollection form, NameValueCollection currentFiles)
    {
        foreach (string file in Request.Files)
        {
            HttpPostedFileBase hpf = Request.Files[file];

            if (hpf.ContentLength == 0)
            {
                form[file] = currentFiles[file];
            }
            else
            {
                var filename = hpf.FileName.Replace(" ", "_").Replace(".", DateTime.Now.Date.Ticks + ".");

                UploadFileName = filename;
                hpf.SaveAs(Server.MapPath("~/Content/custom/" + filename));

                form[file] = UploadFileName;
            }

        }

        if(Request.Files.Count <= 0)
        {
            foreach (var file in currentFiles.AllKeys)
            {
                form[file] = currentFiles[file];
            }
        }
    }

любая обратная связь и предложения будут оценены

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