Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

f010

Upload asp clássico, array e session

Recommended Posts

estou com com problemas ao tentar comunicar variáveis de session de uma página a outra usando asp clássico, uploadify e o clsupload.

 

segue codigo em anexo:

 

form:

 

<!-- Form -->
<form id="novoArquivo" action="envio.asp" method="post" >
<div id="fileNameList">
<pre id="fileInfo"></pre>
<a id="lnkExclui" href="#">Excluir</a>
</div>
<div id="fileUpload">
<input id="fileInput" name="fileInputs" type="file" href="envio.asp" target="_self"/><br>
(TITULO) <span class="rodape"><i>(TITULO)</i></span><br>
<input type="text" name="u_titulo" id="u_titulo" style="width: 385px; height: 25px" />
(DESCRIÇÃO) <span class="rodape"><i>(DESCRIÇÃO)</i></span><br>
<input type="text" name="u_descricao" id="u_descricao" style="width: 385px; height: 25px" />
(GALERIA) <span class="rodape"><i>(GALERIA)</i></span><br>
<input type="text" name="u_galeria" id="u_galeria" style="width: 385px; height: 25px" />
</div>

</form>

 

o código de exibição e o session:

 

<%
Session("sessaoDescricao") = request.form("u_descricao")
Session("sessaoTitulo") = request.form("u_titulo")
Session("sessaoGaleria") = request.form("u_galeria")


%>

<!-- Preparações para o Uploadify -->
<script type="text/javascript" src="uploadify/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="uploadify/swfobject.js"></script>
<script type="text/javascript" src="uploadify/jquery.uploadify.v2.1.0.min.js"></script>
<link rel="stylesheet" href="uploadify/styles/uploadify.css" type="text/css" media="all" title="all" charset="iso-8859-1" />



<script type="text/javascript">

//--------------------------------------------------------------------------------------------
var respData; //Variável que armazena os dados de retorno de cada upload

//As variáveis a seguir são alimentadas na função onComplete
//e utilizadas na função onAllComplete
var numArquivos
= 0; //Indica quantos arquivos foram enviados
var nomeOriginal
= new Array(); //Array com o NOME ORIGINAL de cada arquivo enviado
var nomeArquivo
= new Array(); //Array com o NOME ALTERADO de cada arquivo enviado
var tamArquivo
= new Array(); //Array com o TAMANHO de cada arquivo enviado
var statusArquivo
= new Array(); //Array com o STATUS DE ENVIO de cada arquivo
<!--codigo original-->
var uu_descricao = new Array(); //Array com o descrições da galeria
var uu_titulo
= new Array(); //Array com o titulos de cada arquivo
var uu_galeria
= new Array(); //Array com galeria de cada arquivo



//--------------------------------------------------------------------------------------------
//Esta função será chamada no final de todo o envio
var onAllComplete
= function(event, data) {

//Limpa o local para apresentar os dados
$('#fileInfo').html('');


//Apresenta as informações de cada arquivo
for (var nf = 1; nf <= numArquivos; nf++) {
$('#fileInfo').html(
$('#fileInfo').html() +
'<h2>Arquivo ' + nf + '</h2>' +
'Status de envio: <b>' + statusArquivo[nf] + '</b><br />' +
'Nome original do arquivo: <b>' + nomeOriginal[nf] + '</b><br />' +
'Nome do arquivo gravado: <b>' + nomeArquivo[nf] + '</b><br />' +
'Tamano do arquivo: <b>' + tamArquivo[nf] + '</b><br />' +
<!--codigo original-->
'Descricao do arquivo: <b>' + uu_descricao[nf] + '</b><br />' +
'Titulo do arquivo: <b>' + uu_titulo[nf] + '</b><br />' +
'Galeria do arquivo: <b>' + uu_galeria[nf] + '</b><br />' +
'<a href="uploads/' + nomeArquivo[nf] + '">Link para o arquivo</a><br /><br />'
);
}

//Esconde o botão e apresenta os dados do arquivo
$('#fileNameList').show();
$('#fileUpload').hide();
}


//--------------------------------------------------------------------------------------------
//Esta função será chamada no final de CADA envio
var onComplete
= function (event, queueID, fileObj, response, data) {

respData = $.parseJSON(response)

//Incrementa o número de arquivos
numArquivos
++;

//Armazena o status de envio (certamente 'OK')
statusArquivo[numArquivos] = respData.result;

//Se não houve erro no evio, armazena os dados do arquivo nos arrays
if (respData.result != 'ERRO') {

nomeOriginal[numArquivos] = respData.nomeOriginal;
nomeArquivo[numArquivos] = respData.nomeArquivo;
tamArquivo[numArquivos] = respData.tamArquivo;
<!--codigo original-->
uu_descricao[numArquivos] = Session("sessaoDescricao");
uu_titulo[numArquivos] = Session("sessaoTitulo");
uu_galeria[numArquivos] = Session("sessaoGaleria");

}
}


//--------------------------------------------------------------------------------------------
//O link Excluir mostra novamente o botão de upload
$('#lnkExclui').click(function(e) {
$('#fileNameList').hide();
$('#fileUpload').show();
e.preventDefault;
return false;
});


//--------------------------------------------------------------------------------------------
//Preparação inicial
$(document).ready(function() {
//Configuração do uploadify
$('#fileInput').uploadify({
'uploader' : 'uploadify/uploadify.swf', //Handler Flash para o upload
'script' : 'envio.asp', //Página a ser chamada para tratar o upload
'cancelImg' : 'uploadify/cancelUpload.png', //Imagem do botão de cancelar (X)
'auto' : true, //Envio se inicia ao selecionar o arquivo
'folder' : '', //Pasta para envio (quem vai tratar isso é o ASP)
'buttonText' : 'Procurar', //Texto do botão
'multi' : true, //Permite o envio de vários arquivos
'onComplete' : onComplete, //A função a ser chamada A CADA arquivo enviado (definida acima)
'onAllComplete' : onAllComplete, //A função a ser chamada no fim de TODO o envio (definida acima)
'onSelectOnce' : function(event,data) { //Esta função serve apenas para zerar o número de arquivos enviados
numArquivos = 0; // no início do envio
}
});

//Preparação para a primeira tela
$('#fileNameList').hide();
$('#fileUpload').show();
});
</script>

 

o envio.asp

 

<!--#include file="classUpload/clsUpload.asp"-->
<!--#include file="classJson/JSON_2.0.4.asp"-->
<!--#include file="conexao.asp"-->
<%

'------------------------------------------------------------------------
'Gera uma string aleatória com 'n' dígitos
'Usado para criar um nome aleatório para o arquivo
function fnGeraChave(n)
dim s

randomize
s
= ""
while len(s) < n
s
= chr (int((57 - 48 + 1) * Rnd + 48)) + s
wend
fnGeraChave = s
end function
'------------------------------------------------------------------------
Response.Charset="ISO-8859-1"

dim objUp 'Instância da classe upload (definida no arquivo clsUpload.asp)
dim objJson 'Instância da classe JSON (definida no arquivo JSON_2.0.4.asp)
dim diretorio 'Diretório destino
dim nomeOriginal 'Nome original do arquivo
dim nomeArquivo 'Nome temporário do arquivo
<!--codigo original-->
dim uu_titulo 'titulo
dim uu_descricao 'descricao
dim uu_galeria 'galeria

s_descricao = session("sessaoDescricao")
s_titulo = session("sessaoTitulo")
s_galeria = session("sessaoGaleria")

'(Alterado para evitar que arquivos com mesmo nome se sobrescrevam)

'Instancia a classe clsUpload
set objUp = New clsUpload

'Instancia a classe JSON (para enviar a resposta)
Set objJson = jsObject()

'Campos passados pelo Uploadify:
' - Filename Nome original do arquivo enviado
' - folder Este campo é definido pelo parâmetro 'folder' do uploadify - não estamos usando
' - Filedata Os bytes (stream) que compõem o arquivo
' - Upload Só achei o valor 'Submit Query' neste campo

if objUp.fields("Filedata").length <> 0 and objUp.fields("Filedata").length & "" <> "" then

nomeOriginal = objUp.fields("Filename").value
nomeArquivo
= nomeOriginal
<!--codigo original-->
uu_descricao = "s_descricao"
uu_titulo = "s_titulo"
uu_galeria = "s_galeria"

'O diretório destino é definido aqui, como pasta filha 'uploads' da pasta atual
diretorio = request.serverVariables("PATH_TRANSLATED")
diretorio = left (diretorio,instrRev(diretorio,"\")) & "uploads\"


'Salva o arquivo (Lembre-se de dar direito de escrita para o usuário IUSR!)
objUp.fields("Filedata").saveAs(diretorio & nomeArquivo)


'Envia os dados do arquivo via JSON (pode ser que você precise deles no outro lado)
objJson("result") = "OK"
objJson("nomeArquivo") = nomeArquivo
objJson
("tamArquivo") = objUp.fields("Filedata").length
objJson
("nomeOriginal") = nomeOriginal
<!--codigo original-->
objJson("uu_descricao") = uu_descricao
objJson
("uu_titulo") = uu_titulo
objJson
("uu_galeria") = uu_galeria

else
'Ocorreu um erro no envio
objJson("result") = "ERRO"
end if



'Envia o JSON para o cliente
objJson.flush

'Destroi as instâncias
Set objUp = Nothing
Set objJson = Nothing


%>

 

desdejá agradeço a comunidade!

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro gerado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A página não pode ser exibida devido a um erro interno do servidor.

 

estou tentando um código seu que ví aqui no fórum mais não sei se resolverá meu problema ainda! de fato quando estava usando:

 

(session na página do form)

 

<%
Session("sessaoDescricao") = request.form("u_descricao")
Session("sessaoTitulo") = request.form("u_titulo")
Session("sessaoGaleria") = request.form("u_galeria")
%>

 

e

 

(recebendo direto no envio.asp)

...

uu_descricao = session("sessaoDescricao")
uu_titulo = session("sessaoTitulo")
uu_galeria = session("sessaoGaleria")

...

e usando a mesma:

...

objJson("uu_descricao") = uu_descricao
objJson("uu_titulo") = uu_titulo
objJson("uu_galeria") = uu_galeria

...

 

ao menos me retornava o form com o undefined nos campos referentes a descrição, título e galeria... só que do nada quando voltei o código ao que estava, me deu erro interno de servidor e deixou de funcionar...

 

(a página original do admin ainda está funcionando aliás...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro desabilite as opções de exibir mensagens de erro HTTP amigáveis no browser, para que assim opssamos ver qual o número do erro real.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"

Este erro (HTTP 500 Erro Interno do Servidor) indica que o site visitado teve um problema no servidor que impediu a exibição da página da Web.

Para obter mais informações sobre erros de HTTP, consulte a Ajuda.

"

aff, to quase perdendo o emprego por causa dessa página... enfim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro (HTTP 500 Erro Interno do Servidor) é um erro genérico, desabilite as opções de exibir mensagens de erro HTTP amigáveis no browser, para ver qual o número do erro real.

Compartilhar este post


Link para o post
Compartilhar em outros sites

comecei do zero com o seu código original, consegui ao menos mostrar agora os campos que queria alimentar mais eles vêm assim:

 

"

Status de envio: OK
Nome original do arquivo: Koala.jpg
Nome do arquivo gravado: Koala.jpg
Tamano do arquivo: 780831
galeria do arquivo: undefined
descricao do arquivo: undefined
titulo do arquivo: undefined
Link para o arquivo

"

 

os campos estão assim agora:

 

form.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title> Uploadify e ASP </title>
		<meta name="Generator" content="EditPlus">
		<meta name="Author" content="">
		<meta name="Keywords" content="">
		<meta name="Description" content="">

	</head>

	<body>

		<!-- Preparações para o Uploadify -->
		<script type="text/javascript" src="uploadify/jquery-1.4.4.min.js"></script>
		<script type="text/javascript" src="uploadify/swfobject.js"></script>
		<script type="text/javascript" src="uploadify/jquery.uploadify.v2.1.0.min.js"></script>
		<link rel="stylesheet" href="uploadify/styles/uploadify.css" type="text/css" media="all" title="all" charset="iso-8859-1" />


		<!-- Form -->
		<form id="novoArquivo" action="envio.asp" method="post">
			<div id="fileNameList">
				<pre id="fileInfo"></pre>
				<a id="lnkExclui" href="#">Excluir</a>
			</div>
			<div id="fileUpload">
				<input id="fileInput" name="fileInputs" type="file" />
			</div>
            <div id="campor">
                <br>galeria<br>
				<input id="u_galeria" name="u_galeria" type="text" />
                <br>descricao<br>
                <input id="u_descricao" name="u_descricao" type="text" />
                <br>titulo<br>
                <input id="u_titulo" name="u_titulo" type="text" />
			</div>
		</form>

		<!-- A 'mágica' -->
		<script type="text/javascript">

			//--------------------------------------------------------------------------------------------
			var respData; //Variável que armazena os dados de retorno de cada upload

			//As variáveis a seguir são alimentadas na função onComplete
			//e utilizadas na função onAllComplete
			var numArquivos = 0;			//Indica quantos arquivos foram enviados
			var nomeOriginal = new Array();	//Array com o NOME ORIGINAL de cada arquivo enviado
			var nomeArquivo = new Array();	//Array com o NOME ALTERADO de cada arquivo enviado
			var tamArquivo = new Array();	//Array com o TAMANHO de cada arquivo enviado
			var statusArquivo = new Array(); //Array com o STATUS DE ENVIO de cada arquivo
            var ar_galeria = new Array();
            var ar_descricao = new Array();
            var ar_titulo = new Array();

			//--------------------------------------------------------------------------------------------
			//Esta função será chamada no final de todo o envio
			var onAllComplete = function(event, data) {

				//Limpa o local para apresentar os dados
				$('#fileInfo').html('');

				
				//Apresenta as informações de cada arquivo
				for (var nf = 1; nf <= numArquivos; nf++) {
					$('#fileInfo').html(
						$('#fileInfo').html() + 
						'<h2>Arquivo ' + nf + '</h2>' + 
						'Status de envio: <b>' + statusArquivo[nf] + '</b><br />' +
						'Nome original do arquivo: <b>' + nomeOriginal[nf] + '</b><br />' +
						'Nome do arquivo gravado: <b>' + nomeArquivo[nf] + '</b><br />' +
						'Tamano do arquivo: <b>' + tamArquivo[nf] + '</b><br />' +
                        'galeria do arquivo: <b>' + ar_galeria[nf] + '</b><br />' +
                        'descricao do arquivo: <b>' + ar_descricao[nf] + '</b><br />' +
                        'titulo do arquivo: <b>' + ar_titulo[nf] + '</b><br />' +
						'<a href="uploads/' + nomeArquivo[nf] + '">Link para o arquivo</a><br /><br />'
					);
				}

				//Esconde o botão e apresenta os dados do arquivo
				$('#fileNameList').show();
				$('#fileUpload').hide();
			}


			//--------------------------------------------------------------------------------------------
			//Esta função será chamada no final de CADA envio
			var onComplete = function(event, queueID, fileObj, response, data) {

				respData = $.parseJSON(response)

				//Incrementa o número de arquivos
				numArquivos++;

				//Armazena o status de envio (certamente 'OK')
				statusArquivo[numArquivos] = respData.result;

				//Se não houve erro no evio, armazena os dados do arquivo nos arrays
				if (respData.result != 'ERRO') {

					nomeOriginal[numArquivos] =		respData.nomeOriginal;
					nomeArquivo[numArquivos] =		respData.nomeArquivo;
					tamArquivo[numArquivos] =       respData.tamArquivo;
					ar_galeria[numArquivos] =       request.form("u_galeria");
					ar_descricao[numArquivos] =     request.form("u_descricao");
					ar_titulo[numArquivos] =        request.form("u_titulo");

				}
			}


			//--------------------------------------------------------------------------------------------
			//O link Excluir mostra novamente o botão de upload
			$('#lnkExclui').click(function(e) {
				$('#fileNameList').hide();
				$('#fileUpload').show();
				e.preventDefault;
				return false;
			});


			//--------------------------------------------------------------------------------------------
			//Preparação inicial
			$(document).ready(function() {
				//Configuração do uploadify
				$('#fileInput').uploadify({
					'uploader'		: 'uploadify/uploadify.swf',		//Handler Flash para o upload
					'script'		: 'envio.asp',						//Página a ser chamada para tratar o upload
					'cancelImg'		: 'uploadify/cancelUpload.png',		//Imagem do botão de cancelar (X)
					'auto'			: true,								//Envio se inicia ao selecionar o arquivo
					'folder'		: '',								//Pasta para envio (quem vai tratar isso é o ASP)
					'buttonText'	: 'Procurar',						//Texto do botão
					'multi'			: true,								//Permite o envio de vários arquivos
					'onComplete'	: onComplete,						//A função a ser chamada A CADA arquivo enviado (definida acima)
					'onAllComplete'	: onAllComplete,					//A função a ser chamada no fim de TODO o envio (definida acima)
					'onSelectOnce'	: function(event,data) {			//Esta função serve apenas para zerar o número de arquivos enviados
										numArquivos = 0;				// no início do envio
									  }
				});

				//Preparação para a primeira tela
				$('#fileNameList').hide();
				$('#fileUpload').show();
			});
		</script>



	</body>
</html>

envio.asp

<!--#include file="classUpload/clsUpload.asp"-->
<!--#include file="classJson/JSON_2.0.4.asp"-->

<%

	'------------------------------------------------------------------------
	'Gera uma string aleatória com 'n' dígitos
	'Usado para criar um nome aleatório para o arquivo
	function fnGeraChave(n)
		dim s

		randomize
		s = ""
		while len(s) < n
			s = chr (int((57 - 48 + 1) * Rnd + 48)) + s
		wend
		fnGeraChave = s
	end function
	'------------------------------------------------------------------------

	Response.Charset="ISO-8859-1"

	dim objUp			'Instância da classe upload (definida no arquivo clsUpload.asp)
	dim objJson			'Instância da classe JSON (definida no arquivo JSON_2.0.4.asp)
	dim diretorio		'Diretório destino
	dim nomeOriginal	'Nome original do arquivo
	dim nomeArquivo		'Nome temporário do arquivo 
    dim ar_galeria		'Nome temporário do arquivo
    dim ar_descricao	'Nome temporário do arquivo
    dim ar_titulo	'Nome temporário do arquivo
						'(Alterado para evitar que arquivos com mesmo nome se sobrescrevam)

	'Instancia a classe clsUpload
	set objUp = New clsUpload

	'Instancia a classe JSON (para enviar a resposta)
	Set objJson = jsObject()

	'Campos passados pelo Uploadify:
	'	- Filename	Nome original do arquivo enviado
	'	- folder	Este campo é definido pelo parâmetro 'folder' do uploadify - não estamos usando
	'	- Filedata	Os bytes (stream) que compõem o arquivo
	'	- Upload	Só achei o valor 'Submit Query' neste campo

	if objUp.fields("Filedata").length <> 0 and objUp.fields("Filedata").length & "" <> "" then

		nomeOriginal = objUp.fields("Filename").value
		nomeArquivo = nomeOriginal
        ar_galeria = ar_galeria
        ar_descricao = ar_descricao 
        ar_titulo = ar_titulo

		'O diretório destino é definido aqui, como pasta filha 'uploads' da pasta atual
		diretorio = request.serverVariables("PATH_TRANSLATED")
		diretorio = left (diretorio,instrRev(diretorio,"\")) & "uploads\"

		'Salva o arquivo (Lembre-se de dar direito de escrita para o usuário IUSR!)
		objUp.fields("Filedata").saveAs(diretorio & nomeArquivo)


		'Envia os dados do arquivo via JSON (pode ser que você precise deles no outro lado)
		objJson("result") = "OK"
		objJson("nomeArquivo") = nomeArquivo
		objJson("tamArquivo") = objUp.fields("Filedata").length 
		objJson("nomeOriginal") = nomeOriginal
        objJson("ar_galeria") = ar_galeria
        objJson("ar_descricao") = ar_descricao
        objJson("ar_titulo") = ar_titulo

	else
		'Ocorreu um erro no envio
		objJson("result") = "ERRO"
	end if

	'Envia o JSON para o cliente
	objJson.flush

	'Destroi as instâncias
	Set objUp = Nothing
	Set objJson = Nothing

%>




Compartilhar este post


Link para o post
Compartilhar em outros sites

mas qual o erro atual ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu formulário adicionei os campos galeria, titulo e descrição, só que não estou conseguindo passar esses dados pelo envio e nem exibí-los, e consequentemente não acho que vá conseguir pegá-los no banco de dados. É bom lembrar que preciso passar um campo com o mesmo valor para vários uploads diiferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta como vc esta recuperando os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.