Artículos con la etiqueta Forms Services
Carga de Archivo (Upload File) desde infopath forms services
diciembre 05, 2009Deben utilizar un botón adicional al cual le añaden el siguiente codigo .net:
public void btnCargarDocumento_Clicked(object sender, ClickedEventArgs e)
{
XPathNavigator DOM = this.MainDataSource.CreateNavigator();
XPathNavigator fileDocumento = DOM.SelectSingleNode("/my:misCampos/my:att_documento", NamespaceManager);
byte[] attachmentNodeBytes = Convert.FromBase64String(fileDocumento.Value.ToString());
int fnLength = attachmentNodeBytes[20] * 2;
byte[] fnBytes = new byte[fnLength];
for (int i = 0; i < fnBytes.Length; i++)
{
fnBytes[i] = attachmentNodeBytes[24 + i];
}
char[] charFileName = System.Text.UnicodeEncoding.Unicode.GetChars(fnBytes);
string fileName = new string(charFileName);
fileName = txtIdActividad.Value + "-" + fileName.Substring(0, fileName.Length - 1);
byte[] fileContents = new byte[attachmentNodeBytes.Length - (24 + fnLength)];
for (int i = 0; i < fileContents.Length; ++i)
{
fileContents[i] = attachmentNodeBytes[24 + fnLength + i];
}
string LibreriaDestino = "http://SERVIDOR:8001/sitio/sitiodocs/documentosA/";
string Destino = LibreriaDestino + fileName;
System.Net.WebClient objWebClient = new System.Net.WebClient();
objWebClient.Credentials = System.Net.CredentialCache.DefaultCredentials;
objWebClient.UploadData(Destino, "PUT", fileContents);
//limpiar el control upload
if (!fileDocumento.MoveToAttribute("nil",
fileDocumento.LookupNamespace("xsi")))
{
fileDocumento.SetValue("");
}
}
Espero que sea de ayuda
Firmas Digitales en Infopath Forms Services (dedicado a 3 desarrolladores)
agosto 01, 2008Por defecto, los formularios infopath habilitados para mostrarse via web (Forms Services) no aceptan firmas digitales; pero se pueden definir secciones del formulario para aceptar la firma digital (en caso se requiera firmar todo el documento; pues se debería cargar todos los controles en una sola sección).
Primero, veamos un formulario de liquidación de gastos que contiene 3 secciones; es decir, va a ser firmado por 3 personas (no es un caso aplicado en la vida real; pero muy similar al que hicimos en dicho proyecto)

Vamos a configurar cada sección para que soporte firmas digitales. Ingresamos a las propiedades de la seccion

Ficha "firmas digitales" -> Agregar datos

Seleccionamos la sección que se va a firmar -> Aceptamos

Hacemos lo mismo en las otras secciones:




Ahora veamos la firma digital en cliente servidor:

Seleccionamos una imagen para firmar el documento:

Ingresamos un comentario:

El documento ha sido firmado y los controles de la sección no se pueden modificar.


Todo esto es bonito en cliente servidor; ahora viene la parte "interesante" que es la parte web. Para esta prueba el formulario ya estaba configurado para compatibilidad web tal como indiqué en una entrada anterior. (algún dia pondre el link a esa entrada.. jeje)
Via web el formulario se ve como la siguiente figura:

Ingreso algunos datos en la primera sección:

Firmo el documento, el explorador web me muestra una ventana flotante para ingresar los datos de la firma:

El sistema toma una foto del estado actual del formulario al momento de la firma:

El formulario ha sido firmado y no permite la modificación de los campos en la sección firmada:

Realizamos una segunda firma, para la segunda sección donde se encuentra el detalle de los gastos:

Luego de firmar, no se puede ingresar nuevas filas en la tabla dinámica ni modificar los datos ingresados en esta sección:

Firmamos la última sección:

Finalmente el formulario ha sido firmado en sus 3 secciones:

En cualquier momento se puede ver los detalles de la firma con la captura del estado del formulario en el momento que fue firmado.


Como bien diría mi madre "todo se puede en la vida ", yo agregaría "y aún más en el mundo de la informática" pues sí se puede configurar forms services para soportar firmas digitales, solo se deben hacer algunas configuraciones adicionales y tomar en cuenta algunos detalles como el uso de secciones. Todo sea por dejar de usar programas cliente servidor para llenar formularios web, como se hacía antiguamente.








