Array
(
)

Multiplos Anexos ASP.NET

Ernetwork
   - 20 dez 2013

Galera é o seguinte, tenho uma tela de abertura de chamados e na tela o usuario tem a opção de anexar quantos arquivos ele quiser, porém não estou encontrando uma forma de fazer isso em asp.net, tentei fazer com DevExpess mais tem algumas restrições quanta a manipulação do componente que não deu certo. Gostaria de saber se alguém tem alguma idéia de como eu possa estar fazendo para enviar multiplos Anexos. Estou desenvolvendo em ASP.NET e VB.NET.

Joel Rodrigues
   - 21 dez 2013

Web forms ou MVC?

0
|
0

Ernetwork
   - 21 dez 2013

WebForms

0
|
0

Ernetwork
   - 21 dez 2013

Estou tentando fazer da seguinte maneira... Segue código abaixo para maior entendimento.

ASP.NET

#Código

<%@ Page Language="vb" MasterPageFile="~/Common/CommonMasterPage.Master" AutoEventWireup="true" CodeBehind="upload.aspx.vb" Inherits="ERnetworkSolution.Web.upload" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="cphBody" runat="server">
    <div class="lblAnexo2" style="margin-left: 243px; width: 413px;">
        <asp:FileUpload ID="uplAnexo" runat="server" />
        <asp:Button ID="btnAdicionar" runat="server" Text="Adicionar" OnClick="btnAdicionar_Click" />
        <br />
        <asp:ListBox ID="lstArquivos" runat="server" Width="300px"></asp:ListBox>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Upload" />
        <asp:Button ID="btnDeletar" runat="server" Text="Deletar" OnClick="btnDeletar_Click" />
        <br />
        <asp:Label ID="lblMensagem" runat="server"></asp:Label>
    </div>
</asp:Content>


CODEBEHIND

#Código
Imports System.IO

Public Class upload
    Inherits System.Web.UI.Page

    'Criamos uma variável do tipo ArrayList. Perceba que ela é “Estática”
    Public Shared arrArquivos As New ArrayList()

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub btnAdicionar_Click(sender As Object, e As EventArgs) Handles btnAdicionar.Click
        'Vamos verificar se não existe arquivo selecionado no controle FileUpload.
        If uplAnexo.HasFile Then
            'Verificamos o tamanho do arquivo em bytes. Nesse caso faço Upload de até 11MB
            If uplAnexo.PostedFile.ContentLength > 11000000 Then
                Dim cs As ClientScriptManager = Page.ClientScript
                cs.RegisterClientScriptBlock(Me.[GetType](), "Erro", "alert(O tamanho do arquivo é maior que o tamanho permitido!)", True)

                Return
            Else
                'Adicionamos o arquivo ao arrayList, em seguida ao ListBox.
                arrArquivos.Add(uplAnexo)
                lstArquivos.Items.Add(uplAnexo.PostedFile.FileName)
            End If
        End If
    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'Pegamos o caminho do diretório onde vamos salvar os Uploads
        Dim caminho As String = Server.MapPath("Anexos")
        For Each iFile As FileUpload In arrArquivos
            'Para cada Arquivo iFile em arrArquivos
            'Salvo o arquivo no diretório base, nesse caso "caminho".
            iFile.PostedFile.SaveAs(caminho + Path.GetFileName(iFile.PostedFile.FileName))
            lblMensagem.Text = "Upload de: " & lstArquivos.Items.Count.ToString() & " arquivo (s) Realizado com sucesso!"
        Next

        lstArquivos.Items.Clear()
        'Limpamos o ListBox
        arrArquivos.Clear()
        'Limpamos o ArrayList
    End Sub

    Protected Sub btnDeletar_Click(sender As Object, e As EventArgs) Handles btnDeletar.Click
        If lstArquivos.SelectedIndex > -1 Then
            'Se for selecionado algum item da lista
            arrArquivos.Remove(lstArquivos.SelectedValue)
            'Remove o item do ArrayList
            ' Remove tbm do ListBox
            lstArquivos.Items.Remove(lstArquivos.SelectedValue)
        Else
            Dim cs As ClientScriptManager = Page.ClientScript
            cs.RegisterClientScriptBlock(Me.[GetType](), "Selecionar", "alert(Selecione um arquivo na lista!)", True)

            Return
        End If
    End Sub
End Class


Quando eu utilizo MasterPage (como no código acima) o arquivo não é encontrado, e quanto eu não utilizo a MasterPage o processo ocorre normalmente e o arquivo é encontrado.

0
|
0

Joel Rodrigues
   - 22 dez 2013

Veja se este artigo lhe ajuda: Upload de múltiplos arquivos em ASP.NET Web Forms com o plugin Uploadify

0
|
0

Ernetwork
   - 22 dez 2013

Deu certo! O problema estava na MasterPage, eu estava usando um UpdatePanel e em algum momento ele estava fazendo com que o objeto do Upload se perdesse. Obrigado pela Ajuda!

0
|
0

Joel Rodrigues
   - 23 dez 2013

Opa, legal que deu certo.
Estou concluindo o tópico.
Abraço.

0
|
0