Download de arquivo usando Struts 2

5 respostas
W

Estou iniciando agora em Struts 2, dando manutenção e estou com problema para fazer download de arquivo carregado do banco de dados.

Código da Página:

Função baixarArquivoAnexo:

O link do arqiuvo aparece na página, só que ao clicar ocorre erro de NullPointer

Pesquisei bastante e achei muitos tutoriais de fazer upload, e 1 pra fazer download usando o Request and Response e usando download do Struts 1.
Se alguém souber resolver isso pelo struts 2 eu agradeço. Ou se não tem jeito mesmo e tenho que criar uma Access Request.

Obrigado

Consegui resolver o problema (não consigo criar uma resposta, sempre fica pedindo login).

Na action que tem o evento de baixar arquivo criei atributos de response e request, implementado de ServletRequestAware, ServletResponseAware.
Dai usei o response para enviar o arquivo para download. segue o código:

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

public class AnexoAction extends DocumentoAction implements ServletRequestAware, ServletResponseAware {

// Código para pegar Request e response
private HttpServletRequest request;

private HttpServletResponse response;

public void setServletRequest(HttpServletRequest request) {
	this.request = request;
}

public HttpServletRequest getServletRequest() {
	return request;
}

public void setServletResponse(HttpServletResponse response) {
	this.response = response;
}

public HttpServletResponse getServletResponse() {
	return response;
}

    public void baixarArquivoAnexo() {
	Anexo anexo = (Anexo) getDao().findById(Anexo.class, getId());
	this.getServletResponse().setContentType("application/octet-stream");
	this.getServletResponse().setHeader("Content-Disposition", "attachment; filename=" + anexo.getNomeArquivoAnexo());
	try {
		this.getServletResponse().getOutputStream().write(anexo.getBytesArquivoAnexo());
		this.getServletResponse().getOutputStream().flush();
	} catch (Exception e) {
		System.out.println("Operação cancelada pelo usuário!");
	}
	return;
}

}

5 Respostas

esqueleto

kra já fiz download com jsp sem Struts. serve? e se der pra me ajudar a fazer upload com Struts 2 agradeço tipo se der pra me enviar um exemplo seria muito bom. Ai posso testar download com Struts, ah se servir um exemplo com donwload com Servlet é só avisar que te envio.

Esqueleto

pissurno

no meu caso continua dando NullPointer…???

pissurno

resolvido agora esta funcionado. Precisei apenas dar um refresh no projeto juntamente com um Clean.

brunobuild
${anexo.nomeArquivoAnexo}

Você poderia me explicar como funciona a parte citada encima.

Estou com problemas em fazer o download o upload está fazendo normal só que para fazer o download estou com um puoco de problema você poderia me ajudar?
Segue o meu código

JSP

<s:iterator value="anexos">
                      <tr>	
				<td><s:property value="name" /></td>
				<td>
					<s:url id="removeDocumento" action="anexar!doDelete" namespace="/view">
						<s:param name="id" value="id"/>
						<s:param name="documentoId" value="documentoId"/>
						<s:param name="key" value="subCategoriaId" />
					</s:url>
					<s:a href="%{removeDocumento}">Excluir</s:a>
					|
					<s:url id="downloadDocumento" action="anexar!download" namespace="/view">
						<s:param name="id" value="id"/>
					</s:url>
					<s:a href="%{downloadDocumento}">Download</s:a>
					</td>
				</tr>
</s:iterator>

Action

public String download() throws ServletException, IOException
	{
		this.setAnexo(anexoService.getAnexo(requestParam.get("id")[0]));
		
		return "download";
	}

Struts

<action name="anexar" class="br.com.porto.col.portlet.view.AnexoAction">
	<result name="success">/WEB-INF/view/gerencial/anexarDocumento.jsp</result>
	<result name="edit">/WEB-INF/view/gerencial/editDocumento.jsp</result>
	<result name="download" type="stream">
		<param name="contentDisposition">${myContentDisposition}</param>  
		<param name="inputName">myInputStream</param>
		<param name="contentType">image/jpeg</param>  
	</result>
</action>

Estou precisando muito disso já faz uma semana que eu estou travado nisso por favor me ajude!!!

joaoorso

Também estou com dificuldades em fazer o download de um arquivo .

http://www.guj.com.br/posts/list/131361.java#711055

Como resolveu o problema ?

Criado 19 de dezembro de 2007
Ultima resposta 10 de jul. de 2009
Respostas 5
Participantes 5