Recuperando um arquivo inserido no banco de dados

2 respostas
brunobuild

Pessoa eu estou fazendo um portlet utilizando, JPA+Spring+ Struts 2
Eu preciso fazer um cadastro para documentos, esse documento pode ter uma descrição e um ou mais arquivos em anexo.
Eu consegui fazer o arquivo ser inserido no banco utilizando o FileUpload da apache, porém não estou conseguindo resgata-lo e fazer o download da aplicação para o meu computador ou client.
Segue o que estou fazendo.

Struts.xml

<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>

Action

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

JSP

<%@taglib prefix="s" uri="/struts-tags"%>

<table width="80%" align="center">
	<tr>
		<td colspan="2"><h2>Gerenciador de Anexos</h2></td>
	</tr>
	<tr><td><span style="coloer: red;"></span><s:actionerror /></spam></td></tr>
	<tr><td><hr size="2"/></td></tr>
	<tr><td> </td></tr>
	<tr>
		<td>
			Incluir anexo para o documento <s:property value="nome"/>

			<s:form name="anexarDocumento" action="anexar!doAdd" enctype="multipart/form-data" portletMode="view" method="post" theme="simple">
				<input type="hidden" name="key" id="key" value="<s:property value='subCategoriaId' />" />
				<input type="hidden" name="documentoId" id="documentoId" value="<s:property value='documentoId' />" />

				<table>
					<tr>
						<td>Título:</td>
						<td><s:textfield name="titulo" id="titulo" /></td>
					</tr>
					<tr>
						<td>Arquivo:</td>
						<td><s:file name="file" id="file" /></td>
					</tr>
					<tr>
						<td><s:submit value="Anexar"/></td>
					</tr>
				</table>
			</s:form>
		</td>
	</tr>
</table>

<table width="80%" align="center">
	<tr>
		<td><hr size="2"/></td>
	</tr>
	<tr>
		&lt;td&gt;<b>Lista de Anexos</b>&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;
			&lt;s:if test="anexos.size() &gt; 0"&gt;
				&lt;table width="100%"&gt;
					&lt;tr&gt;
						&lt;td&gt;<b>T&iacute;tulo</b>&lt;/td&gt;
						&lt;td&gt;<b>A&ccedil;&atilde;o</b>&lt;/td&gt;
					&lt;/tr&gt;
					&lt;s:iterator value="anexos"&gt;
						&lt;tr&gt;	
							&lt;td&gt;&lt;s:property value="name" /&gt;&lt;/td&gt;
							&lt;td&gt;
								&lt;s:url id="removeDocumento" action="anexar!doDelete" namespace="/view"&gt;
									&lt;s:param name="id" value="id"/&gt;
									&lt;s:param name="documentoId" value="documentoId"/&gt;
									&lt;s:param name="key" value="subCategoriaId" /&gt;
								&lt;/s:url&gt;
								&lt;s:a href="%{removeDocumento}"&gt;Excluir&lt;/s:a&gt;
								|
								&lt;s:url id="downloadDocumento" action="anexar!download" namespace="/view"&gt;
									&lt;s:param name="id" value="id"/&gt;
								&lt;/s:url&gt;
								&lt;s:a href="%{downloadDocumento}"&gt;Download&lt;/s:a&gt;
							&lt;/td&gt;
						&lt;/tr&gt;
					&lt;/s:iterator&gt;
				&lt;/table&gt;
			&lt;/s:if&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;
			&lt;s:url id="back" action="documento!doEdit" namespace="/viewGerencial"&gt;
				&lt;s:param name="documentoId" value="documentoId"/&gt;
				&lt;s:param name="key" value="subCategoriaId" /&gt;
			&lt;/s:url&gt; 
			&lt;s:a href="%{back}"&gt;Voltar&lt;/s:a&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

Já faz 3 dias que estou tentando desvendar este mistério e preciso muito disso, por favor me ajudem…

VLW!!!

[]'s

2 Respostas

fiaux

Você tem que disponibilizar o inputStream para ele retornar.

brunobuild

Pessoa Estou precisando de Ajuda ninguém tem uma luz.
A solução dada eu já estou fazendo mas não tenho uma solução ainda.
Eu preciso passar uma url mas como eu estou usando portlet fica ccomplicado

Criado 19 de novembro de 2008
Ultima resposta 21 de nov. de 2008
Respostas 2
Participantes 2