private void Button1_Click(object sender, System.EventArgs e)
{
string strpic,str,path;
strpic="";
path=this.Page.Request.PhysicalApplicationPath.ToString();
str=f_pic.PostedFile .FileName.ToString();
str=GetFileNameFromPath(str);
path = path+"file\\"+str;
this.f_pic.PostedFile.SaveAs(path);
} string GetFileNameFromPath(string path)
{
//PointPosition :点号所在的位置。
//Len :路径的总长度。
int PointPosition,Len;
Len = path.Length;
PointPosition = path.IndexOf(".",0,Len-1);
return path.Substring(PointPosition,Len-PointPosition);
}
还有一点注意,<form id="Form1" method="post" encType="multipart/form-data" runat="server">一定要加上这句“encType="multipart/form-data"”
{
string strpic,str,path;
strpic="";
path=this.Page.Request.PhysicalApplicationPath.ToString();
str=f_pic.PostedFile .FileName.ToString();
str=GetFileNameFromPath(str);
path = path+"file\\"+str;
this.f_pic.PostedFile.SaveAs(path);
} string GetFileNameFromPath(string path)
{
//PointPosition :点号所在的位置。
//Len :路径的总长度。
int PointPosition,Len;
Len = path.Length;
PointPosition = path.IndexOf(".",0,Len-1);
return path.Substring(PointPosition,Len-PointPosition);
}
还有一点注意,<form id="Form1" method="post" encType="multipart/form-data" runat="server">一定要加上这句“encType="multipart/form-data"”
解决方案 »
- 在前台js函数里能不能控件asp.net控件?
- 求一个WEB的分页控件
- 一个正则问题
- 小弟刚刚开始学,想请教一个基础问题,请各位大虾指教啊。
- 在datatable上加入表头?
- Panel中的滾動條_分權給了
- 100分,求精通C#,ASP.NET的学习方法,教材,资料(C#,ASP.net视频最好),以及做项目时的流程分析和经验分享。
- 错误:无法从web上获取项目文件,哪位指点下,先谢了
- 用access+asp.net中能否实现这个东西?
- HttpWebRequest编程,支持带ViewState的网页POST请求
- 请教!!请问Html控件的onclick()怎么使用哦???
- 给水晶报表学习入门者的若干建议,顺便散分。
这里有详细答案。
如果我要有上传文件默认路径怎么做呢?file控件中好像不能够有默认路径的
麻烦各位了
Sub UploadFile(sender As Object, e As EventArgs)
If FileUp.PostedFile.ContentLength = 0 Then
FileInfo.Visible = False
Exit Sub
Else
FileInfo.Visible = True
End If
FSize.Text = CStr(FileUp.PostedFile.ContentLength)
FName.Text = FileUp.PostedFile.FileName
Dim FileSplit() As String = Split( FileUp.PostedFile.FileName, "\" )
Dim FileName As String = FileSplit(FileSplit.Length-1)
FileUp.PostedFile.SaveAs( Server.MapPath(".") & "\Upload\" & FileName )
Dim Exts() As String = Split( FileName, "." )
Dim Ext As String = LCase(Exts(Exts.Length-1))
If Ext <> "jpg" And Ext <> "jpeg" And Ext <> "gif" And Ext <> "txt" And Ext <> "htm" And Ext <> "html" Then
FDisplay.Visible = False
Else
FDisplay.Text = "<A Target='_blank' HREF='Upload/" & _
FileName & "'>上传文件</A>"
End If
End Sub
</script>
<Html>
<Body BgColor=White>
<H3>上传文件<Hr></H3>
<Form Enctype="multipart/form-data" runat="server">
上传文件
<Input Type="File" id="FileUp" runat="server"><P>
<Asp:button id="Upload" OnClick="UploadFile" Text="Upload"
runat="server"/>
</form><Hr>
<Div id="FileInfo" Visible="False" runat="server">
上传文件名 <Asp:Label id="FName" runat="server"/><br>
上传文件大小 <Asp:Label id="FSize" runat="server"/><br>
<Asp:Label id="FDisplay" runat="server"/>
</Div>
</Body>
</Html>
1。把图片文件(JPG GIF PNG)上传,
2。保存到指定的路径(在web.config中设置路径,以文件的原有格式保存),
3。并自动生成指定宽度的(在web.config中设置宽度)
4。和指定格式的(在web.config中指定缩略图的格式)
5。和原图比例相同的缩略图(根据宽度和原图的宽和高计算所略图的高度)
6。可以判断是否已经存在文件
7。如果不覆盖,则给出错误
8。如果选中"覆盖原图"checkbox,则覆盖原图。
9。可以根据要求,在webform上设置1个以上的file input和相应的checkbox
10。并在文件上传完毕后,显示原图的文件名,尺寸,字节,和
11。缩略图的文件名尺寸。
12。缩略图的文件名格式:原图+"_thumb."+指定格式,如:test.jpg_thumb.gif,以便于管理。
--------------------
public void UploadFile(object sender, System.EventArgs e)
{
string imgNameOnly, imgNameNoExt, imgExt;
string imgThumbnail;
int erroNumber = 0;
System.Drawing.Image oriImg, newImg;
StringBuilder picInfo = new StringBuilder();
if(Page.IsValid)
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = Request.Files[i];
string fileExt = (System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower();
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
if(fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png")
{
if(System.IO.File.Exists(ConfigurationSettings.AppSettings["FePicSavePath"]+ imgNameOnly) && (checkboxlistRewrite.Items[i].Selected == false))
{
erroNumber = erroNumber + 1;
picInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 已经存在,请修改文件名<br>" );
}
}
else
{
erroNumber = erroNumber + 1;
picInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 扩展名 " + fileExt + " 不被许可<br>" );
}
}
if(erroNumber > 0)
{
picInfo.Append("<font color=red>全部*作均未完成,请修改错误,再进行*作</font><br>");
}
else
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = Request.Files[i];
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
imgNameNoExt = System.IO.Path.GetFileNameWithoutExtension(PostedFile.FileName);
imgExt = System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLower();
oriImg = System.Drawing.Image.FromStream(PostedFile.InputStream);
newImg = oriImg.GetThumbnailImage(Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]),Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"])*oriImg.Height/oriImg.Width,null,new System.IntPtr(0));
switch(imgExt)
{
//case ".jpeg":
case ".jpg":
oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly , System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case ".gif":
oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly , System.Drawing.Imaging.ImageFormat.Gif);
break;
case ".png":
oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly , System.Drawing.Imaging.ImageFormat.Png);
break;
}
//oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameNoExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
switch(ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower())
{
//jpeg format can get the smallest file size, and the png is the largest size
//case "jpeg":
case "jpg":
newImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
break;
case "gif":
newImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly + "_thumb.gif",System.Drawing.Imaging.ImageFormat.Gif);
imgThumbnail = imgNameOnly + "_thumb.gif";
break;
case "png":
newImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly + "_thumb.png",System.Drawing.Imaging.ImageFormat.Png);
imgThumbnail = imgNameOnly + "_thumb.png";
break;
default:
newImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
break;
}//switch
picInfo.Append("<b>文件 名:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.ContentLength/1024 + "KB<br>");
picInfo.Append("<b>缩略图名:</b>" + imgThumbnail + " ( " + newImg.Width + " x " + newImg.Height + " )<br><br>");
oriImg.Dispose();
newImg.Dispose();
}//for
picInfo.Append("<font color=red>所有*作成功</font><br>");
}// if erronumber = 0
}
else
{
picInfo.Append("<font color=red>有错误,请检查。*作未成功</font><br>");
}
lblPicInfo.Text = picInfo.ToString();
}
<form method=post encType=multipart/ form-data runat="server">如果没有这个属性,就不能实现上传。 然后在此Web Form中增加一个Web Form类的Button,双击Button添加如下代码:
//上传图片的程序段DateTime now = DateTime.Now ; //取现在时间到DataTime类的对象now中string strBaseLocation = "D:\\web\\FC\\pic\\";//这是文件将上传到的服务器的绝对目录if (uploadfile1.PostedFile.ContentLength != 0) //判断选取对话框选取的文件长度是否为0 {uploadfile1.PostedFile.SaveAs(strBaseLocation+now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+".jpg");//执行上传,并自动根据日期和文件大小不同为文件命名,确保不重复Label1.Text="图片1已经上传,文件名为:"+now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+".jpg"; navigator.Insert(System.Xml.TreePosition.After, XmlNodeType.Element,"pic1","","") ;navigator.Insert(System.Xml.TreePosition.FirstChild, XmlNodeType.Text,"pic1","","") ;navigator.Value= now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+".jpg" ;navigator.MoveToParent() ;}上面的代码用于笔者开发的一个使用XML文件存储新闻信息的系统中,后面几句代码作用是写上传文件信息到XML文件中。如果要上传其他类型文件,只需要将jpg改为相应类型的后缀名即可,如改为doc即可上传Word文件,浏览器即可直接浏览上传的Word文件。 【注意事项】
1. 上传文件不可以无限大; 2. 要注意IIS的安全性方面的配合; 3. 用Visual Studio 的安装项目做安装程序的时候,请注意安装程序所在的绝对路径问题; 4. 注意文件上传后的重名问题。