Pregunta

He creado un archivo PDF ItextSharp que se crea en un MemoryStream. Pero ahora necesito pasar este archivo a la Biblioteca de Medios de Kentico.

Estaría agradecido si alguien pudiera mostrar mi cómo hacer esto. El código que tengo actualmente es:

//Media Library Info - takes Media Library Name and Website Name
        MediaLibraryInfo libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyLibrary", CMSContext.CurrentSiteName);

        //Folder in Media Library where Item will be Inserted
        string mediaLibraryFolder = folder;

        //create media file info item - takes the relative path to the document, the library ID, and the folder name where the document will be located within the media library
        MediaFileInfo fileInfo = new MediaFileInfo();

        fileInfo.FileLibraryID = libraryInfo.LibraryID;
        fileInfo.FileBinaryStream = file;
        fileInfo.FileName = title.Replace(" ", "").Trim();
        fileInfo.FileTitle = title;
        fileInfo.FileDescription = description;
        fileInfo.FileExtension = ".pdf";
        fileInfo.FileMimeType = "application/pdf";
        fileInfo.FilePath = String.Concat("/", folder, "/", title.Replace(" ", "").Trim(), ".pdf");

        // Save media file info
        MediaFileInfoProvider.ImportMediaFileInfo(fileInfo);

Sigo recibiendo errores de la base de datos debido a columnas anulables, por ejemplo, archivos de tamaño, fileextension, etc. Dado que estoy usando un trefuera de memoria, no puedo encontrar una manera de proporcionar toda esa información.

¿Estoy usando la API de MediaFileInfo incorrectamente junto con un archivo MemoryStream?

¿Fue útil?

Solución

En realidad, no creo que necesite hacer nada que dijo Radekm. Simplemente puede transmitir el archivo al disco para guardarlo, y luego llamar al método de importación que está utilizando para importarlo a la biblioteca de medios.

Por ejemplo, una biblioteca de medios llamada "Imágenes del sitio" para el sitio "MySite" tendrá una carpeta en el disco en /MySite/media/Site Images/. Deje caer su archivo allí (puede usar subpoletas si lo desea). En este punto, el archivo está "en" la biblioteca de medios, pero aún no se ha importado, por lo que no podrá usarlo. Puede ver que esto es cierto al ver la biblioteca de medios en la interfaz CMS Desk. Sin embargo, este archivo aún no se ha importado a la biblioteca de medios y debería ver un punto de exclamación dentro de un triángulo amarillo al lado de su nuevo archivo.

Entonces, después de obtener el archivo en la ubicación correcta, puede usar ese archivo información para completar el objeto MediaFileInfo e importar el archivo.

Otros consejos

¿Podría adaptar este código y pasar los bytes del PDF desde aquí?

Agregar programáticamente archivos a la biblioteca de medios de Kentico

Lamentablemente, la clase MemoryStream no contiene estas informaciones, por lo que no puede obtenerlas directamente de este objeto. De todos modos, si quieres suministrar Tamaño del archivo propiedad, puede usar Sra. Longitud propiedad como solución. Básicamente, esta propiedad en particular no es importante, por lo que puede ser incluso algún número ficticio. En cuanto a la extensión: está diciendo que está recibiendo un error diciendo que esta propiedad es nula, aunque la configura como „fileInfo.FileExtension =" .pdf ";"? ¿Puedes aclarar? También tenga en cuenta que necesita establecer algunas otras propiedades, Filesiteid, fileCreatedWhen, fileguid y Ruta de archivo (ruta dentro de la biblioteca de medios dada). Si tiene un código fuente completo de la API de Kentico, puede inspirarse en el constructor de MediaFileInfo objeto Medialibrary MediaFileInfo.cs clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top