Ir para conteúdo

POWERED BY:

Arquivado

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

ThaisN

[Resolvido] Salvar arquivo no servidor e forçar download no clien

Recommended Posts

Olá a todos!!!

 

Estou com um probleminha. Eu gero um arquivo .dwg ou dxf (AUTOCAD) no servidor em um directorio que eu informo dentro do código. Esse arquivo é salvo no servidor e náo no cliente. Eu necesito que seja salvo no cliente. Pelo que encontrei na internet parece que necessito forçar o download desse arquivo para que o usuário possa salvar no seu PC.

Náo sei como fazer isso. Alguém pode me ajudar?

 

Abaixo está o código onde gero o arquivo. Estou perdida em como fazer para obter o arquivo gerado e obrigar o usuario a fazer o download.

 

Me ajudem por favor!!!! O que está em vermelho ao final do código é o que eu considero mais importante para entender o que eu necessito.

 

Obrigada!!!

 

<%
		MAIS CÓDIGO....	
 
		 if q = "" then
		 	X = 395198
		 end if
		 
		 
		 if q = "" then
		 	Y = 4604520
		 end if
		 
		 if q = "" then
		 	X2 = 399909
		 end if
		 if q = "" then
		 	Y2 = 4602071
		 end if
		
		if q = "" then
			q = "VARECINTO"
			
		end if
		if dir = "" then
			dir = "c:\TEMP\teste"
		end if
		
		if tipo = "" then
			tipo = 0
		end if
		
		dim objSesMgr, objMS
		Set objSesMgr = Server.CreateObject("GMWebMap.MapServerManager")
		Set objMS = objSesMgr.MapServer("") ' Application("connectfile"))
		
		objMS.Clear
		objMS.SetCoordinateSystem "C:\thais\SmartStore\GISATLL.csf"
		
		
		Dim ConnectionObj 
		set ConnectionObj=objMS.createobject("Geomedia.Connection")
		
		ConnectionObj.Location = "C:\thais\Smart\GISATLL.ddc"
		
		ConnectionObj.Mode = 0
	
		ConnectionObj.Type = "GeoMediaSmartStore.GDatabase"
		ConnectionObj.Connect
		
		Dim teste, teste1
		teste = ConnectionObj.Status
		
		
		dim oP, oPipe
		set oP= objMS.createobject("GWEUtility.CustomDataUtility")
		set oP.connection=  ConnectionObj
		set oPipe= oP.getOriginatingPipe
		
		oPipe.table= q
		
		Dim objGeom, objPnt, objCH, varBlob, objSFP
		
		 
		 Set objGeom = objMS.CreateObject("GeoMedia.RectangleGeometry")  
		 
		 
		
		 With objGeom
		   
			.Origin.X =  X '406257.92  'Application("xmin") '406257.92   '395215
			.Origin.Y =  Y '4596260.42 'Application("ymax")   '4596260.42	'4604503
			.Origin.Z = 0
			.Width = Abs(X2 - X)
			.Height = Abs(Y - Y2)
		  End With
		   
				  
		  Dim a
		 
		  Set objCH = objMS.CreateObject("GWEUtility.GeometryUtility")
		  Set objCH.InputGeometry = objGeom
		  varBlob = objCH.OutputBLOB
		
		' Create and configure Spatial Filter Pipe
		  Set objSFP = objMS.CreateObject("GeoMedia.SpatialFilterPipe")
		  Set objSFP.InputRecordset = oPipe.OutputRecordset
		  objSFP.InputGeometryFieldName = "GEOMETRY"
		  objSFP.SpatialFilter = varBlob
		  objSFP.SpatialOperator = 3	'3 es lo que queremos
			
		  Dim recSet
		  Set recSet = 	objSFP.OutputRecordset
		
		'VERIFICAR SI HAY DATOS EN EL RECSET, SI NO HAY ES PORQUE NO HAY NADA A SER EXPORTADO:
		Dim InputRecset
		Dim AcadObject  
		
		'Dim cont, valida
		'Dim valida
		cont = 0
		valida = 0
		while not Recset.EOF		
			recSet.MoveNext
		wend
		cont = 	recSet.RecordCount
		'Response.Write  "<option value=""" + CStr(cont) + """>" + CStr(cont) + "</option>"
		'Response.Write "'Teste Thais   '" + CStr(cont)
		if cont > 0 then
		
			Response.write ("<form name='bb' >")
			Response.Write("<input type='hidden' name='camisa' value='3'>")
			Response.write ("</form>")


				valida = 3
						
			Set AcadObject = objMS.createObject("GeoMedia.ExportToAutoCADService") 
					  
			
			Set InputRecset = recSet
			
			
			  With AcadObject 
				   Set .InputRecordset = InputRecset		
				  .InputRecordset.MoveFirst
			  while not .InputRecordset.EOF
				.InputRecordset.MoveNext
			  wend
					
			.OutputFileName = dir 'DIRETORIO NO SERVIDOR ONDE SERÁ SALVO O ARQUIVO GERADO
			  .InputGeometryFieldName = "GEOMETRY" 
					
			  .OutputFileType = tipo
					
			  .LayerName = q 
					
					
			End With 
				   
			AcadObject.Execute  'AO REALIZAR O 'EXECUTE', O ARQUIVO GERADO Ë EXPORTADO PARA O DIRETORIO DIR INFORMADO ACIMA
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

para forçar o download eu uso essa função adaptada do amigo Cabo Gel

 

public function download(arquivo, pasta)
	dim objStream
	set objStream = server.createObject("ADODB.Stream")
	with (response)
		.buffer = true  
		.addHeader "Content-Type","application/x-msdownload"
		.addHeader "Content-Disposition","attachment; filename="&arquivo  
		.flush  
	end with
	with (objStream)
		.open  
		.type = 1  
		.loadFromFile server.mapPath(pasta)
	end with
	response.binaryWrite objStream.read
	set objStream = nothing
	response.flush
end function

<% call download("teste.jpg", "/arquivos") %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela resposta, TED!!!

Mas continuo com um problema! Passei a ruta correta, coloquei c:\temp e o nome do meu arquivo é test.dwg:

 

<% call download("test.dwg", "c:\temp")  %>

Mas o que ele salva é um arquivo com que náo contém a minha capa CAD.

 

Tentei salvar um arquivo .txt deste mesmo diretório e ele também náo guardou o arquivo correto. Ao abrir havia:

 

<font face="Arial" size=2>
<p>Server.MapPath()</font> <font face="Arial" size=2>error 'ASP 0172 : 80004005'</font>
<p>
<font face="Arial" size=2>Ruta de acceso no válida</font>
<p>
<font face="Arial" size=2>/wpthais/commands/Exportacion/forca.asp</font><font face="Arial" size=2>, line 59</font>
<p>
<font face="Arial" size=2> '''El parámetro Path del método MapPath debe ser una ruta de acceso virtual. Se utilizó una ruta de acceso física.
</font>

Como faço pra resolver isso?

 

Troquei a linha .loadFromFile server.mapPath(pasta) por .loadFromFile pasta e náo funcionou. Agora a mensagem do arquivo de saída é:

 

<font face="Arial" size=2>
<p>ADODB.Stream</font> <font face="Arial" size=2>error '800a0bba'</font>
<p>
<font face="Arial" size=2> ''No se pudo abrir el archivo.</font>
<p>
<font face="Arial" size=2>/wpthais/commands/Exportacion/forca.asp</font><font face="Arial" size=2>, line 60</font>

Por que ele náo pode abrir o arquivo?

 

Aguardo resposta!

 

MUITO OBRIGADA!!!

 

Thais

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.