using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; public partial class Default3 : System.Web.UI.Page { public override void DataBind() { getFile();
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;/// <summary> /// CetFileUpload 的摘要说明 /// </summary> public class CetFileUpload { private string filepath = string.Empty;//文件相对路径,如果要进行预览,则应加上"~/" private string fileurl ="~/"; private string errmsg="";//上传成功的消息 private string okmsg="";//上传失败的消息 //private int maxsize;//最大上传文件大小 private string[] allowedExtensions ={ ".jpg", ".gif", ".jpeg", ".rar" };//允许上传的文件类型 public CetFileUpload() {
} /// <summary> /// 上传后的文件相对路径 /// </summary> public string FilePath { get { return filepath; } set {
ie里可以降低安全性的方法用下面的代码
<script type="text/javascript">
function getFileSize(filePath)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
alert("文件大小为:"+fso.GetFile(filePath).size);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">
</body> Firefox 3.6里可以采用下面的方法
http://dotnet.aspx.cc/article/facbb9a7-c9c6-46ad-9591-5ba34ae27e58/read.aspx
事先在后台注册this.IconFile.Attributes.Add("onpropertychange", "UploadOnpropertychange()");
然后这里面JS代码获取整个上传的路径,split会用吧 得到文件的类型,判断下是否是你需要的类型就可以了
不要期望说选择对话框的数据类型可以由你自己代码控制 当然你第二次上传文件时,那个数据类型会自动变成第一次上传文件相同的数据类型
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class Default3 : System.Web.UI.Page
{
public override void DataBind()
{
getFile();
} private string username = "srym";
private HyperLink hy;
private long lg=0;
private void getFile()
{
foreach (string s in Directory.GetFiles(Server.MapPath("~/upload")))
{
string temp = s;
temp = temp.Split('\\')[temp.Split('\\').Length - 1];
if(temp.StartsWith(username))
{
FileInfo fl=new FileInfo(s);
lg += fl.Length;
temp = temp.Substring(temp.IndexOf("(")+1);
temp = temp.Substring(0, temp.LastIndexOf(")"));
hy=new HyperLink();
hy.Attributes.Add("title",File.GetCreationTime(s).ToString());
hy.Text = temp+"<br />";
hy.NavigateUrl = "~/upload/" + temp;
this.PlaceHolder1.Controls.Add(hy);
} }
Label lbl = new Label();
lbl.Text = "您已经使用了"+lg.ToString()+"KB"+"<br />您还有"+(40960-lg)+"KB";
this.PlaceHolder1.Controls.Add(lbl);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataBind();
}
} private string path;
private string filename;
private string format;
protected void Button1_Click(object sender, EventArgs e)
{
path = Server.MapPath("~/upload");
format = this.File1.PostedFile.FileName.Split('.')[this.File1.PostedFile.FileName.Split('.').Length - 1];
//filename = this.File1.PostedFile.FileName;
filename = "srym"+System.DateTime.Now.ToString().Replace("/", "").Replace(":", "").Replace(" ", "");
filename = filename + "(" + this.File1.PostedFile.FileName +")";
this.File1.PostedFile.SaveAs(path + "/" + filename + "." + format); Response.Redirect("default3.aspx");
}
}
----------------------------------
web.config
System.web下
<httpRuntime maxRequestLength="1024" />
文件上传最大值。一般4M以下在这改。
大文件上传一般用其他方法。上传图片就控制上传文件后缀名。我也新手。希望大家批评。
我的是 agent项目文件名
-------upload文件夹(保存上传文件)
-------manage文件夹
+----add.aspx(上传页面)
就是说我的保存路径在上传页面上一级
要怎么写保存路径啊?
string savePath = Server.MapPath("Upload/);
这样不行,保存到manage下面去了
string savePath = Server.MapPath("../Upload/");//当前页面的目录的上一层
string savePath = Server.MapPath("/Upload/"); //从域名的根,开始的目录,通常是 C:\Inetpub\wwwroot
string savePath = Server.MapPath("../Upload/");//当前页面的目录的上一层
string savePath = Server.MapPath("/Upload/"); //从域名的根,开始的目录,通常是 C:\Inetpub\wwwroot
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// CetFileUpload 的摘要说明
/// </summary>
public class CetFileUpload
{
private string filepath = string.Empty;//文件相对路径,如果要进行预览,则应加上"~/"
private string fileurl ="~/";
private string errmsg="";//上传成功的消息
private string okmsg="";//上传失败的消息
//private int maxsize;//最大上传文件大小
private string[] allowedExtensions ={ ".jpg", ".gif", ".jpeg", ".rar" };//允许上传的文件类型
public CetFileUpload()
{
}
/// <summary>
/// 上传后的文件相对路径
/// </summary>
public string FilePath
{
get
{
return filepath;
} set
{
filepath = value;
}
}
/// <summary>
/// 上传后的文件URL
/// </summary>
public string FileURL
{
get
{
return fileurl+filepath;
} set
{ fileurl = value;
}
}
/// <summary>
/// 上传错误时的消息
/// </summary>
public string ErrMsg
{
get{return errmsg;}
set{errmsg=value;}
}
/// <summary>
/// 上传成功时的消息
/// </summary>
public string OkMsg
{
get{return okmsg;}
set{okmsg=value;}
}
/// <summary>
/// 文件上传
/// </summary>
/// <returns>文件上传到服务器的相对路径</returns>
public bool UpFile(FileUpload FU)
{
if (FU.HasFile)//检查是否有文件
{
Boolean fileOK = false;//检查文件是否符合要求
string path = "FileUpload/";//保存文件的目标位置的相对路径,按实际情况修改即可
//取得文件的扩展名
string fileExtension = System.IO.Path.GetExtension(FU.PostedFile.FileName).ToLower(); //新的基于时间的随机文件名
Random rnd = new Random();
string newName = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + rnd.Next(1000).ToString();
//String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg",".rar" };//允许上传的文件类型 for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
//如果文件符合要求
if (fileOK)
{
try
{
string toPath = System.Web.HttpContext.Current.Server.MapPath("~/" + path) + newName + fileExtension;//最终完全路径,保存文件的目标位置
FU.PostedFile.SaveAs(toPath);//保存文件
this.OkMsg = "文件上传成功!"; this.FilePath=path + newName + fileExtension;//返回文件相对路径
return true; }
catch (Exception ex)
{
this.ErrMsg = "上传文件失败!<br>" + ex.ToString();
return false;
//CetBase.msg("上传失败!");
}
}
else//如果文件类型错误
{
this.ErrMsg = "文件类型错误!";
return false;
}
}
else//如果没有选择文件
{
this.ErrMsg = "请选择要上传的文件!";
return false; }
}
}使用方法:1.添加一个FileUpload和一个Button()即可(注意:按实际情况需修改一下文件的保存目录)。2.Button事件代码://上传照片
protected void bt_Up_Click(object sender, EventArgs e)
{
CetFileUpload cetFU = new CetFileUpload();
if (cetFU.UpFile(FU_Pic))//如果上传成功
{
tb_Pic.Text = cetFU.FilePath;//这里上传后得到的路径
this.PreImg.ImageUrl = cetFU.FileURL;//这是图片预览
}
else//如果上传失败
{
System.Web.HttpContext.Current.Response.Write("<script language='javascript'>"+cetFU.ErrMsg+"</script>"); //弹出错误提示 }
}
这是一个比较方便的图片上传方法。如何在上传之前判断图片大小我也不清楚。