Hi, i have experience with creating items and users by the API, for a project we want allow users to upload media (and store them as umbraco media items). Problem is that i can not really find samples or information how to do this by using the api. Does someone mabye have a sample or a code snippet how to accomplish this?
Ok its working now, found a sample on the old board:
[code]
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using umbraco; using umbraco.cms; using umbraco.cms.businesslogic.member; using umbraco.cms.businesslogic.web; using umbraco.BusinessLogic; using umbraco.cms.businesslogic.media; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Xml;
namespace umbraco.presentation.usercontrols { public partial class MediaUpload : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) {
var imageType = MediaType.GetByAlias("Image"); //Hardcoded Node 1045 Media m = Media.MakeNew(filename, imageType, new User(0), 1045);
// Create a new folder in the /media folder with the name /media/propertyid System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString())); _fullFilePath = System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString() + "/" + filename); FileUpload1.PostedFile.SaveAs(_fullFilePath);
// Save file size try { System.IO.FileInfo fi = new FileInfo(_fullFilePath); m.getProperty("umbracoBytes").Value = fi.Length.ToString(); } catch { }
// Check if image and then get sizes, make thumb and update database if (",jpeg,jpg,gif,bmp,png,tiff,tif,".IndexOf("," + ext + ",") > 0) { int fileWidth; int fileHeight;
FileStream fs = new FileStream(_fullFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
} } protected void generateThumbnail(System.Drawing.Image image, int maxWidthHeight, int fileWidth, int fileHeight, string fullFilePath, string ext, string thumbnailFileName) { // Generate thumbnail float fx = (float)fileWidth / (float)maxWidthHeight; float fy = (float)fileHeight / (float)maxWidthHeight; // must fit in thumbnail size float f = Math.Max(fx, fy); //if (f < 1) f = 1; int widthTh = (int)Math.Round((float)fileWidth / f); int heightTh = (int)Math.Round((float)fileHeight / f);
// fixes for empty width or height if (widthTh == 0) widthTh = 1; if (heightTh == 0) heightTh = 1;
// Create new image with best quality settings Bitmap bp = new Bitmap(widthTh, heightTh); Graphics g = Graphics.FromImage(bp); g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality;
// Copy the old image to the new and resized Rectangle rect = new Rectangle(0, 0, widthTh, heightTh); g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
// Copy metadata ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo codec = null; for (int i = 0; i < codecs.Length; i++) { if (codecs[i].MimeType.Equals("image/jpeg")) codec = codecs[i]; }
// Set compresion ratio to 90% EncoderParameters ep = new EncoderParameters(); ep.Param[0] = new EncoderParameter(Encoder.Quality, 90L);
// Save the new image bp.Save(thumbnailFileName, codec, ep); bp.Dispose(); g.Dispose();
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using umbraco; using umbraco.cms; using umbraco.cms.businesslogic.member; using umbraco.cms.businesslogic.web; using umbraco.BusinessLogic; using umbraco.cms.businesslogic.media; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Xml;
namespace umbraco.presentation.usercontrols { public partial class MediaUpload : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) {
var imageType = MediaType.GetByAlias("Image"); //ROOT NODE Onder welke Media folder je hem opslaat!!! Media m = Media.MakeNew(filename, imageType, new User(0), 1045);
// Create a new folder in the /media folder with the name /media/propertyid System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString())); _fullFilePath = System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString() + "/" + filename); FileUpload1.PostedFile.SaveAs(_fullFilePath);
// Save file size try { System.IO.FileInfo fi = new FileInfo(_fullFilePath); m.getProperty("umbracoBytes").Value = fi.Length.ToString(); } catch { }
// Check if image and then get sizes, make thumb and update database if (",jpeg,jpg,gif,bmp,png,tiff,tif,".IndexOf("," + ext + ",") > 0) { int fileWidth; int fileHeight;
FileStream fs = new FileStream(_fullFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
} } protected void generateThumbnail(System.Drawing.Image image, int maxWidthHeight, int fileWidth, int fileHeight, string fullFilePath, string ext, string thumbnailFileName) { // Generate thumbnail float fx = (float)fileWidth / (float)maxWidthHeight; float fy = (float)fileHeight / (float)maxWidthHeight; // must fit in thumbnail size float f = Math.Max(fx, fy); //if (f < 1) f = 1; int widthTh = (int)Math.Round((float)fileWidth / f); int heightTh = (int)Math.Round((float)fileHeight / f);
// fixes for empty width or height if (widthTh == 0) widthTh = 1; if (heightTh == 0) heightTh = 1;
// Create new image with best quality settings Bitmap bp = new Bitmap(widthTh, heightTh); Graphics g = Graphics.FromImage(bp); g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality;
// Copy the old image to the new and resized Rectangle rect = new Rectangle(0, 0, widthTh, heightTh); g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
// Copy metadata ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo codec = null; for (int i = 0; i < codecs.Length; i++) { if (codecs[i].MimeType.Equals("image/jpeg")) codec = codecs[i]; }
// Set compresion ratio to 90% EncoderParameters ep = new EncoderParameters(); ep.Param[0] = new EncoderParameter(Encoder.Quality, 90L);
// Save the new image bp.Save(thumbnailFileName, codec, ep); bp.Dispose(); g.Dispose();
Uploading Media and API?
Hi, i have experience with creating items and users by the API, for a project we want allow users to upload media (and store them as umbraco media items). Problem is that i can not really find samples or information how to do this by using the api. Does someone mabye have a sample or a code snippet how to accomplish this?
Creating media items is as simple as creating new documents.
Using umbraco.cms.businesslogic.media; do something like this:
The "1234" is the parent id under which the media item should be created.
Ok Sebastiaan got that working, but how do i get the file i uploaded in my temp dir to that media item?
Do i have to manually create the upload folder, and resize it, or are there methods in the api to do that?
Ok its working now, found a sample on the old board:
[code]
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using umbraco;
using umbraco.cms;
using umbraco.cms.businesslogic.member;
using umbraco.cms.businesslogic.web;
using umbraco.BusinessLogic;
using umbraco.cms.businesslogic.media;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Xml;
namespace umbraco.presentation.usercontrols
{
public partial class MediaUpload : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
string mediaPath = "";
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(@"C:\\temp\" + FileUpload1.FileName);
string _text = FileUpload1.PostedFile.FileName;
string filename;
string _fullFilePath;
filename = _text.Substring(_text.LastIndexOf("\\") + 1, _text.Length - _text.LastIndexOf("\\") - 1).ToLower();
var imageType = MediaType.GetByAlias("Image");
//Hardcoded Node 1045
Media m = Media.MakeNew(filename, imageType, new User(0), 1045);
// Create a new folder in the /media folder with the name /media/propertyid
System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString()));
_fullFilePath = System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString() + "/" + filename);
FileUpload1.PostedFile.SaveAs(_fullFilePath);
// Save extension
string orgExt = ((string)_text.Substring(_text.LastIndexOf(".") + 1, _text.Length - _text.LastIndexOf(".") - 1));
orgExt = orgExt.ToLower();
string ext = orgExt.ToLower();
try
{
m.getProperty("umbracoExtension").Value = ext;
}
catch { }
// Save file size
try
{
System.IO.FileInfo fi = new FileInfo(_fullFilePath);
m.getProperty("umbracoBytes").Value = fi.Length.ToString();
}
catch { }
// Check if image and then get sizes, make thumb and update database
if (",jpeg,jpg,gif,bmp,png,tiff,tif,".IndexOf("," + ext + ",") > 0)
{
int fileWidth;
int fileHeight;
FileStream fs = new FileStream(_fullFilePath,
FileMode.Open, FileAccess.Read, FileShare.Read);
System.Drawing.Image image = System.Drawing.Image.FromStream(fs);
fileWidth = image.Width;
fileHeight = image.Height;
fs.Close();
try
{
m.getProperty("umbracoWidth").Value = fileWidth.ToString();
m.getProperty("umbracoHeight").Value = fileHeight.ToString();
}
catch { }
// Generate thumbnails
string fileNameThumb = _fullFilePath.Replace("." + orgExt, "_thumb");
generateThumbnail(image, 100, fileWidth, fileHeight, _fullFilePath, ext, fileNameThumb + ".jpg");
image.Dispose();
}
mediaPath = "/media/" + m.Id.ToString() + "/" + filename;
m.getProperty("umbracoFile").Value = mediaPath;
m.XmlGenerate(new XmlDocument());
}
}
protected void generateThumbnail(System.Drawing.Image image, int maxWidthHeight, int fileWidth, int fileHeight, string fullFilePath, string ext, string thumbnailFileName)
{
// Generate thumbnail
float fx = (float)fileWidth / (float)maxWidthHeight;
float fy = (float)fileHeight / (float)maxWidthHeight;
// must fit in thumbnail size
float f = Math.Max(fx, fy); //if (f < 1) f = 1;
int widthTh = (int)Math.Round((float)fileWidth / f); int heightTh = (int)Math.Round((float)fileHeight / f);
// fixes for empty width or height
if (widthTh == 0)
widthTh = 1;
if (heightTh == 0)
heightTh = 1;
// Create new image with best quality settings
Bitmap bp = new Bitmap(widthTh, heightTh);
Graphics g = Graphics.FromImage(bp);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
// Copy the old image to the new and resized
Rectangle rect = new Rectangle(0, 0, widthTh, heightTh);
g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
// Copy metadata
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo codec = null;
for (int i = 0; i < codecs.Length; i++)
{
if (codecs[i].MimeType.Equals("image/jpeg"))
codec = codecs[i];
}
// Set compresion ratio to 90%
EncoderParameters ep = new EncoderParameters();
ep.Param[0] = new EncoderParameter(Encoder.Quality, 90L);
// Save the new image
bp.Save(thumbnailFileName, codec, ep);
bp.Dispose();
g.Dispose();
}
}
}
[/code]
Cool, could you provide a link to the old post, I tried Googling but couldn't find it (or fix the codesample in this post)?
Mmmm another try:
[code]
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using umbraco;
using umbraco.cms;
using umbraco.cms.businesslogic.member;
using umbraco.cms.businesslogic.web;
using umbraco.BusinessLogic;
using umbraco.cms.businesslogic.media;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Xml;
namespace umbraco.presentation.usercontrols
{
public partial class MediaUpload : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
string mediaPath = "";
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(@"C:\\temp\" + FileUpload1.FileName);
string _text = FileUpload1.PostedFile.FileName;
string filename;
string _fullFilePath;
filename = _text.Substring(_text.LastIndexOf("\\") + 1, _text.Length - _text.LastIndexOf("\\") - 1).ToLower();
var imageType = MediaType.GetByAlias("Image");
//ROOT NODE Onder welke Media folder je hem opslaat!!!
Media m = Media.MakeNew(filename, imageType, new User(0), 1045);
// Create a new folder in the /media folder with the name /media/propertyid
System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString()));
_fullFilePath = System.Web.HttpContext.Current.Server.MapPath(GlobalSettings.Path + "/../media/" + m.Id.ToString() + "/" + filename);
FileUpload1.PostedFile.SaveAs(_fullFilePath);
// Save extension
string orgExt = ((string)_text.Substring(_text.LastIndexOf(".") + 1, _text.Length - _text.LastIndexOf(".") - 1));
orgExt = orgExt.ToLower();
string ext = orgExt.ToLower();
try
{
m.getProperty("umbracoExtension").Value = ext;
}
catch { }
// Save file size
try
{
System.IO.FileInfo fi = new FileInfo(_fullFilePath);
m.getProperty("umbracoBytes").Value = fi.Length.ToString();
}
catch { }
// Check if image and then get sizes, make thumb and update database
if (",jpeg,jpg,gif,bmp,png,tiff,tif,".IndexOf("," + ext + ",") > 0)
{
int fileWidth;
int fileHeight;
FileStream fs = new FileStream(_fullFilePath,
FileMode.Open, FileAccess.Read, FileShare.Read);
System.Drawing.Image image = System.Drawing.Image.FromStream(fs);
fileWidth = image.Width;
fileHeight = image.Height;
fs.Close();
try
{
m.getProperty("umbracoWidth").Value = fileWidth.ToString();
m.getProperty("umbracoHeight").Value = fileHeight.ToString();
}
catch { }
// Generate thumbnails
string fileNameThumb = _fullFilePath.Replace("." + orgExt, "_thumb");
generateThumbnail(image, 100, fileWidth, fileHeight, _fullFilePath, ext, fileNameThumb + ".jpg");
image.Dispose();
}
mediaPath = "/media/" + m.Id.ToString() + "/" + filename;
m.getProperty("umbracoFile").Value = mediaPath;
m.XmlGenerate(new XmlDocument());
}
}
protected void generateThumbnail(System.Drawing.Image image, int maxWidthHeight, int fileWidth, int fileHeight, string fullFilePath, string ext, string thumbnailFileName)
{
// Generate thumbnail
float fx = (float)fileWidth / (float)maxWidthHeight;
float fy = (float)fileHeight / (float)maxWidthHeight;
// must fit in thumbnail size
float f = Math.Max(fx, fy); //if (f < 1) f = 1;
int widthTh = (int)Math.Round((float)fileWidth / f); int heightTh = (int)Math.Round((float)fileHeight / f);
// fixes for empty width or height
if (widthTh == 0)
widthTh = 1;
if (heightTh == 0)
heightTh = 1;
// Create new image with best quality settings
Bitmap bp = new Bitmap(widthTh, heightTh);
Graphics g = Graphics.FromImage(bp);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
// Copy the old image to the new and resized
Rectangle rect = new Rectangle(0, 0, widthTh, heightTh);
g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
// Copy metadata
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo codec = null;
for (int i = 0; i < codecs.Length; i++)
{
if (codecs[i].MimeType.Equals("image/jpeg"))
codec = codecs[i];
}
// Set compresion ratio to 90%
EncoderParameters ep = new EncoderParameters();
ep.Param[0] = new EncoderParameter(Encoder.Quality, 90L);
// Save the new image
bp.Save(thumbnailFileName, codec, ep);
bp.Dispose();
g.Dispose();
}
}
}
[/code]
Ok posted it on my dropbox: http://dl.dropbox.com/u/3055426/fileupload.zip
is working on a reply...