我想做个视频上传,并且要在上传的时候生成一张略图,(相当于打刚打开一个视频时的第一个画面).
文件上传的代码如下:
string nam = myFile.PostedFile.FileName ;
//get the end "." of filename (inclue path)
//取得文件名(抱括路径)里最后一个"."的索引
int i= nam.LastIndexOf(".");
//取得文件扩展名
string newext =nam.Substring(i);
//自动根据日期和文件大小不同为文件命名,确保文件名不重复
DateTime now = DateTime.Now;
string newname=now.DayOfYear.ToString()+myFile.PostedFile.ContentLength.ToString();
//保存文件到是IIS根目录下的upload目录.可以改变.
//用Server.MapPath()取当前文件的绝对目录.在asp.net里"\"必须用"\\"代替
myFile.PostedFile.SaveAs(Server.MapPath("\\upload\\"+newname+newext));
//得到这个文件的相关属性:文件名,文件类型,文件大小
fname.Text=myFile.PostedFile.FileName;
fenc.Text=myFile.PostedFile.ContentType ;
fsize.Text=myFile.PostedFile.ContentLength.ToString();
string temp="upload/"+newname+newext;哪位高人可以帮我解决缩略的问题呀.有代码或者思路的,都可以跟贴.先谢过了!
文件上传的代码如下:
string nam = myFile.PostedFile.FileName ;
//get the end "." of filename (inclue path)
//取得文件名(抱括路径)里最后一个"."的索引
int i= nam.LastIndexOf(".");
//取得文件扩展名
string newext =nam.Substring(i);
//自动根据日期和文件大小不同为文件命名,确保文件名不重复
DateTime now = DateTime.Now;
string newname=now.DayOfYear.ToString()+myFile.PostedFile.ContentLength.ToString();
//保存文件到是IIS根目录下的upload目录.可以改变.
//用Server.MapPath()取当前文件的绝对目录.在asp.net里"\"必须用"\\"代替
myFile.PostedFile.SaveAs(Server.MapPath("\\upload\\"+newname+newext));
//得到这个文件的相关属性:文件名,文件类型,文件大小
fname.Text=myFile.PostedFile.FileName;
fenc.Text=myFile.PostedFile.ContentType ;
fsize.Text=myFile.PostedFile.ContentLength.ToString();
string temp="upload/"+newname+newext;哪位高人可以帮我解决缩略的问题呀.有代码或者思路的,都可以跟贴.先谢过了!
解决方案 »
- 在C# WinForm中的Form对像中如何才能获取Form自身所在的Exe或Dll文件名
- 如何在GDI+中取点所在的图形
- 请问在多页的情况下如何实现DataGridView定位行
- 大文件读取!!!急!!!
- 解压缩rar文件
- xpath 查询问题
- 讨论:在收件人列表中,可以填入多个收件人的地址,但是为什么还要群发功能呢?
- 这种iframe刷新问题该怎么来实现呢?
- 小弟自学,想写一个备份和恢复数据库数据信息的工具,大家指点一下
- 我现在开始学C#!
- 一个TextBox 的Name为txtSite,一个string变量赋值,我如何通过这个变量,对TextBox控件的Text属性进行赋值操作
- 怎样将数据分多批次录入数据库中?
/// 上传检查
/// </summary>
/// <param name="file">要上传的文件对象</param>
/// <param name="UploadType">允许上传的类型</param>
/// <param name="UploadSize">允许上传的大小</param>
/// <returns></returns>
private int PreUpload(HtmlInputFile file, string UploadType, int UploadSize)
{
int result = 0;
if (file.PostedFile.ContentLength != 0)
{
if (file.PostedFile.ContentLength < 1024 * UploadSize)
{
string fileName = file.PostedFile.FileName;
string newExt = fileName.Substring(fileName.LastIndexOf(".") + 1); bool isType = false; if (!UploadType.Equals("*"))
{
string[] s = UploadType.Split(new char[] { ',' }); for (int j = 0; j < s.Length; j++)
{
if (newExt.ToLower() == s[j].ToLower())
{
isType = true;
break;
}
else
{
isType = false;
}
}
}
else
{
isType = true;
} if (isType)
{
result = 1; //可以上传
}
else
{
result = 2; //不能上传此种类型的文件
}
}
else
{
result = 3; //文件太大
}
}
else
{
result = 4; //文件长度为0,不能上传
}
return result;
}
/// <summary>
/// 不处理缩小图片的上传
/// </summary>
/// <param name="file">要上传的文件对象</param>
/// <param name="fileInUploadPath">要上传的目录</param>
/// <param name="TableID">上传对应表的ID</param>
/// <param name="UploadType">允许上传的类型</param>
/// <param name="UploadSize">允许上传的大小</param>
/// <param name="NewFile">返回新文件名</param>
/// <returns></returns>
public int Upload(HtmlInputFile file, string fileInUploadPath, string UploadType, int UploadSize, out string NewFile)
{
NewFile = ""; int result = PreUpload(file, UploadType, UploadSize);
if (result == 1)
{
string fileName = file.PostedFile.FileName;
string newExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); string newFileName = fileInUploadPath + "-" + DateTime.Now.ToShortDateString() + "-" + DateTime.Now.Ticks.ToString();
string savePath = Config.HomePath + "Upload\\" + fileInUploadPath + "\\" + newFileName + "." + newExt;
savePath = savePath.Replace(@"\\", @"\"); file.PostedFile.SaveAs(savePath); NewFile = newFileName + "." + newExt;
}
return result;
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing.Imaging;namespace eMeng.Exam
{
/// <summary>
/// Thumbnail 的摘要说明。
/// </summary>
public class Thumbnail : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Label1.Text = "<h3>在ASP.NET里轻松实现缩略图</h3>";
Button1.Text = "上载并显示缩略图"; } #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
HttpFileCollection MyFileColl = HttpContext.Current.Request.Files;
HttpPostedFile MyPostedFile = MyFileColl[0]; if (MyPostedFile.ContentType.ToString().ToLower().IndexOf("image") < 0)
{
Response.Write("无效的图形格式。");
return;
}
GetThumbNail(MyPostedFile.FileName, 100, 100,
MyPostedFile.ContentType.ToString(), false, MyPostedFile.InputStream);
}
private System.Drawing.Imaging.ImageFormat GetImageType(object strContentType)
{
if ((strContentType.ToString().ToLower()) == "image/pjpeg")
{
return System.Drawing.Imaging.ImageFormat.Jpeg;
}
else if ((strContentType.ToString().ToLower()) == "image/gif")
{
return System.Drawing.Imaging.ImageFormat.Gif;
}
else if ((strContentType.ToString().ToLower()) == "image/bmp")
{
return System.Drawing.Imaging.ImageFormat.Bmp;
}
else if ((strContentType.ToString().ToLower()) == "image/tiff")
{
return System.Drawing.Imaging.ImageFormat.Tiff;
}
else if ((strContentType.ToString().ToLower()) == "image/x-icon")
{
return System.Drawing.Imaging.ImageFormat.Icon;
}
else if ((strContentType.ToString().ToLower()) == "image/x-png")
{
return System.Drawing.Imaging.ImageFormat.Png;
}
else if ((strContentType.ToString().ToLower()) == "image/x-emf")
{
return System.Drawing.Imaging.ImageFormat.Emf;
}
else if ((strContentType.ToString().ToLower()) == "image/x-exif")
{
return System.Drawing.Imaging.ImageFormat.Exif;
}
else if ((strContentType.ToString().ToLower()) == "image/x-wmf")
{
return System.Drawing.Imaging.ImageFormat.Wmf;
}
else
{
return System.Drawing.Imaging.ImageFormat.MemoryBmp;
}
} private void GetThumbNail(string strFileName, int iWidth, int iheight,
string strContentType, bool blnGetFromFile, System.IO.Stream ImgStream)
{
System.Drawing.Image oImg;
if (blnGetFromFile)
{
oImg = System.Drawing.Image.FromFile(strFileName);
}
else
{
oImg = System.Drawing.Image.FromStream(ImgStream);
}
oImg = oImg.GetThumbnailImage(iWidth, iheight, null, IntPtr.Zero);
string strGuid = System.Guid.NewGuid().ToString().ToUpper();
string strFileExt = strFileName.Substring(strFileName.LastIndexOf("."));
Response.ContentType = strContentType;
MemoryStream MemStream = new MemoryStream();
oImg.Save(MemStream, GetImageType(strContentType));
MemStream.WriteTo(Response.OutputStream);
} }
}
我感觉如果对于没有压缩过的MPEG这样的,可以通过文件格式,找到第一帧的数据组成图片.
如果是压缩过的,只好用写一个控制让它播放,然后抓取里面的图片.
可惜我只做过上传FLASH抓图,没有做过视频的.不过感觉原理还是差不多的.可以到我的站点上下载这个组件(ASP的)http://www.ironsoft.net