Mostrando entradas con la etiqueta Infopath. Mostrar todas las entradas
Mostrando entradas con la etiqueta Infopath. Mostrar todas las entradas

miércoles, 22 de diciembre de 2010

Como descargar un archivo de una forma de un flujo (infopath)

Buenas, a continuación les dejo el código, para descargar un archivo, de una tarea de un flujo de sharepoin (Infopath), esto es para no tener que almacenarlo en alguna lista, o generarlo físicamente.

System.Collections.Hashtable extendedProp = Microsoft.SharePoint.Workflow.SPWorkflowTask.GetExtendedPropertiesAsHashtable(item);
//Response.ContentType = "text/HTML";
//Response.BinaryWrite(Convert.FromBase64String(extendedProp["FileAttached"] as String));

if (!String.IsNullOrEmpty((extendedProp["FileAttached"] as String)))
{
byte[] data = Convert.FromBase64String(extendedProp["FileAttached"] as String);
byte[] buffer = data;
Int32 blockSize = 10;

//get filename
int namebufferlen = data[20] * 2;
byte[] filenameBuffer = new byte[namebufferlen];
for (int i = 0; i < filenameBuffer.Length; i++)
{
filenameBuffer[i] = data[24 + i];
}

char[] asciiChars = UnicodeEncoding.Unicode.GetChars(filenameBuffer);

string filename = new string(asciiChars);

filename = filename.Substring(0, filename.Length - 1);

using (System.IO.Stream st = new System.IO.MemoryStream(data))
{
long dataLengthToRead = st.Length;
Response.ContentType = "text/plain"; //Or other you need
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\"", filename));
//Response.AddHeader("Content-Disposition", "attachment; filename=\"" + theFileName + "\"");
while (dataLengthToRead > 0 && Response.IsClientConnected)
{
Int32 lengthRead = st.Read(buffer, 0, blockSize);
Response.OutputStream.Write(buffer, 0, lengthRead);
Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
Response.Flush();
Response.Close();
}
Response.End();
}


Saludos,

miércoles, 20 de octubre de 2010

Utilizar infopath (content type) en la edición de tareas

Ya tenía mucho que no posteaba, pero hoy quiero compartirles con un problema que me estaba quitando el sueño. El problema es si quería utilizar una forma de infopath para la edisión de tareas. Hasta ahi no hay problema, el detalle es que necesitaba agregar un custom type para agregar columnas que necesitaba que estuvieran en la tarea. Para no hacerles el cuento largo, lo que se necesita hacer es muy sencillo, generar un contenttype, que tenga en un principio el id, del contenttype "OffWFCoommon", que es la tarea por default que usa sharepoint. Posteriormente le concatenamos un 00, y el id de nuestro nuevo ContentType. Ese mismo lo ponemos en el "TaskListContentTypeID" del xml de configuración del flujo.

Saludos