Configurando Uploads de Arquivo
Para criar um campo para upload de arquivos no Web UI Framework, use o Widget Upload de Arquivo, que é uma extensão do controle de campo de texto no Ext JS.
O gráfico a seguir mostra um exemplo de um controle de upload de arquivo criado usando o Ext JS (o controle Anexar Foto). Em um navegador da web, o campo de entrada é usado como um arquivo. O gráfico a seguir mostra um campo de texto com um botão Navegar. Quando você clica em Procurar, uma caixa de diálogo de seleção de arquivo é aberta. A caixa de diálogo é específica do sistema operacional e não pode ser customizada.

Também é necessário ajustar as seguintes propriedades em yfs.properties para configurar os uploads de arquivos.
Use as propriedades sc.file.upload.maxfilesize e sc.file.upload.maxfilesize.table_name para especificar o tamanho dos arquivos que podem ser transferidos por upload.
Use as propriedades sc.file.upload.allowedfiletypes e sc.file.upload.allowedfiletypes.table_name para especificar o tipo de arquivos que podem ser transferidos por upload.
- Use a propriedade sc.file.upload.dir para especificar um diretório que suspenderá temporariamente os arquivos transferidos por upload.
- Use a propriedade sc.file.upload.type para decidir quando fazer upload do arquivo para o servidor.
{{{
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
}}}- A validação de tipo de arquivo é executada. As validações de nome e tipo de arquivo também são realizadas no lado do servidor. A validação de tamanho não é possível no navegador.
- Os arquivos são colocados em um subdiretório do diretório temporário especificado na propriedade sc.file.upload.dir no arquivo yfs.properties (
{sc.file.upload.dir}/{App_Server_Name}/{userID of the user uploading the files}/{session ID of the session which is uploading the files}). Os valoresApp_Server_Name,userIDeJsessionIDserão removidos de todos os caracteres especiais. - O valos dos dados internos do widget de upload de arquivo (FileUploadField)
é alterado para
SCFile:<Element_ID>. Por exemplo:{User : { UserId : "user1", attachFile : "SCFile:ext-comp-1037" } }
- Depois que os arquivos são transmitidos para o servidor, o elemento FileAttachments com as informações do arquivo (como ID exclusivo do arquivo, local do arquivo e ID do widget) são anexadas no objeto de dados da tela que é usado no upload. A chamada de API real para enviar informações do arquivo para o
banco de dados é feita com esta entrada.
A seguir é mostrada a mudança para um modelo de dados de amostra depois de anexar as informações:
{User : { UserId : "user1", attachFile : "user1_1267599880675_1" } FileAttachments : { FileAttachment : { file_id : "user1_1267599880675_1", file_path : "att2.bmp", Element_ID : "ext-comp-1037" } } }
- Houver uma falha ao enviar arquivos para o servidor.
- Houver uma exceção ao tentar persistir os arquivos no banco de dados como parte da chamada de API (ou seja, após os arquivos tiverem sido colocados com êxito no servidor).
Eventos são chamados quando os arquivos são excluídos de seu local temporário no servidor.
Protegendo Exclusão de Arquivo
A Interface ISecureFileDelete permite excluir com segurança um arquivo que é transferido por upload para o local temporário do servidor. Use a propriedade a seguir no arquivo yfs.properties para conectar-se à Interface ISecureFileDelete:
sc.secure.file.delete.impl=/*
Certifique-se de que sc.secure.file.delete.impl seja um caminho totalmente qualificado para a implementação da classe Java™ da interface ISecureFileDelete. A definição da Interface ISecureFileDelete possui um método que deve ser implementado:
+
/**
* @param file is an existing file which has to be deleted
* from temporary location of the server. This method
* implementation gets called only when file exists
* on the server location.
* @return true if the file delete is successful, false otherwise.
*/
boolean deleteFile(File file);Por padrão,
a exclusão de arquivo segura está disponível. Uma implementação padrão para
exclusão de arquivos segura é conectada. A classe de implementação é 'com.sterlingcommerce.woodstock.util.frame.file.impl.PLTSecureFileDeleteImpl'. Se a classe de implementação plugged-in for inválida ou não acessível, o arquivo será excluído usando a API Java File Delete.