1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema para recuperar o caminho de um documento salvo em uma pasta e passado o caminho para o banco de dados.

Bom dia galera,

Estou fazendo o upload de um documento em pdf, e coloca em uma pasta, e passo para o banco de dados o nome do documento e o caminho. Até aí está funcionando numa boa. Porém, na hora que vou editar, e tenho que recuperar o nome do documento e seu caminho, não recupera, para fazer a troca desse documento e quando salvo no banco de dados está salvando System.Web.HttpPostedFileWrapper isso no nome do documento.

Meu Controller:

public ActionResult Editar(string id)
        {
            appAreaResponsavel = AreaResponsavelAplicacaoConstrutor.AreaResponsavelAplicacao();
            var listaAreaResponsavel = appAreaResponsavel.ListarTodos();
            var itensSelecionaveis = new List<SelectListItem>();

            foreach (var item in listaAreaResponsavel)
            {
                itensSelecionaveis.Add(new SelectListItem
                {
                    //Value = item.CodAreaResponsavel.ToString(),
                    Text = item.AreaResponsavel
                });
            }

            ViewBag.AreasResponsaveis = itensSelecionaveis;
            //return View();

            var requisicao = appRequisicao.ListarPorId(id);

            if (requisicao == null)
                return HttpNotFound();

            return View(requisicao);

        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Editar(Requisicao requisicao, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                if (file == null)
                {
                    ModelState.AddModelError("File", "Por favor faça o anexo do documento");
                }
                else if (file.ContentLength > 0)
                {
                    int TamanhoMaximoDoArquivo = 1024 * 1024 * 3; //3 MB
                    string[] ExtensaoDoArquivo = new string[] { ".pdf" };

                    if (!ExtensaoDoArquivo.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.'))))
                    {
                        ModelState.AddModelError("File", "Por favor arquivo do tipo: " + string.Join(", ", ExtensaoDoArquivo));
                    }

                    else if (file.ContentLength > TamanhoMaximoDoArquivo)
                    {
                        ModelState.AddModelError("File", "Seu arquivo é muito grande, tamanho máximo permitido é: " + TamanhoMaximoDoArquivo + " MB");
                    }
                    else
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        var path = Path.Combine(Server.MapPath("~/Content/Upload"), fileName);

                        requisicao.NomeDocumentoAnexo = fileName;
                        requisicao.CaminhoDocumentoAnexo = path;

                        file.SaveAs(path);
                        ModelState.Clear();
                    }
                }

                appRequisicao.Salvar(requisicao);
                return RedirectToAction("Index");
            }
            return View(requisicao);
        }

Minha View:

<div class="container">

    @using (Html.BeginForm("Editar", "Requisicao", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <fieldset>
            <div class="control-group">
                <legend>Editar Requisição</legend>

                @Html.HiddenFor(model => model.CodRequisicao)

                <div class="control-group">
                    @Html.LabelFor(model => model.CodRequisicao)
                </div>
                <div class="controls">
                    @Html.TextBoxFor(model => model.CodRequisicao, new { disabled = "disabled" })
                    @Html.ValidationMessageFor(model => model.CodRequisicao)
                </div>
            </div>

            <div class="control-group">
                <div class="control-label">
                    @Html.LabelFor(model => model.AreaResponsavel)
                </div>
                <div class="controls">
                    @Html.DropDownListFor(model => model.AreaResponsavel, (List<SelectListItem>)ViewBag.AreasResponsaveis)
                </div>
            </div>

            <div class="control-group">
                <div class="control-label">
                    @Html.LabelFor(model => model.Descricao)
                </div>
                <div class="controls">
                    @Html.TextAreaFor(model => model.Descricao, new { @class = "input-xxlarge", @rows = 8 })
                    @Html.ValidationMessageFor(model => model.Descricao)
                </div>
            </div>

            <div class="control-group">
                <label class="control-label" for="anexo">Documento Anexado (Somente documentos em pdf)</label>
                <div class="controls">
                    @Html.TextBoxFor(model=>model.NomeDocumentoAnexo, new { type="file", id="fileToUpload", name="file" })
                    @Html.ValidationMessageFor(model => model.NomeDocumentoAnexo)
                    <span class="text-error" id="spanfile"></span>
                </div>
            </div>

            <p>
                <button class="btn btn btn-primary" type="submit">Salvar</button>
                <button class="btn btn btn-primary" type="button" onclick="history.go(-1)">Cancelar</button>
            </p>
        </fieldset>
    }
</div>

Meu Model:

namespace ControleDeAtividade.Dominio
{
    public class Requisicao
    {
        [DisplayName("Código da Requisição")]
        public int CodRequisicao { get; set; }

        [DisplayName("Área Responsável")]
        public string AreaResponsavel { get; set; }

        [DisplayName("Descrição")]
        public string Descricao { get; set; }

        [DisplayName("Documento Anexado")]
        public string NomeDocumentoAnexo { get; set; }

        public string CaminhoDocumentoAnexo { get; set; }
    }
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags html html5 asp.net-mvc c# banco-de-dados ou faça a sua própria pergunta.