钱柜999:NET文件上传的三种基本方法,文件上传示例整理

钱柜999:NET文件上传的三种基本方法,文件上传示例整理

复制代码 代码如下:

措施二:用Html控件HtmlInputFile,上传到网址根目录。

办法3:用Html成分<input type=”file”
…/>,通过Request.Files上传到网址根目录。

if (FileUpload1.HasFile)
try
{
FileUpload1.SaveAs(“d:\\luceneData\\” + FileUpload1.FileName);
Label1.Text = “File name: ” +
FileUpload1.PostedFile.FileName + “<br>” +
FileUpload1.PostedFile.ContentLength + ” kb<br>” +
“Content type: ” +
FileUpload1.PostedFile.ContentType;
}
catch (Exception ex)
{
Label1.Text = “ERROR: ” + ex.Message.ToString();
}
else
{
Label1.Text = “You have not specified a file.”;
}
仍是能够在web.config文件中,突破暗中认可上传限制的四MB,举个例子
<httpRuntime
executionTimeout=”110″
maxRequestLength=”11000″
requestLengthDiskThreshold=”80″
useFullyQualifiedRedirectUrl=”false”
minFreeThreads=”8″
minLocalRequestFreeThreads=”4″
appRequestQueueLimit=”5000″
enableKernelOutputCache=”true”
enableVersionHeader=”true”
requireRootedSaveAsPath=”true”
enable=”true”
shutdownTimeout=”90″
delayNotificationTimeout=”5″
waitChangeNotification=”0″
maxWaitChangeNotification=”0″
enableHeaderChecking=”true”
sendCacheControlHeader=”true”
apartmentThreading=”false” />
设置maxRequestLenth属性,这里为11000KB,即11MB。
而对此多文本上传,也很简短,比方三个例子
string filepath = “d:\\luceneData\\”;
HttpFileCollection uploadedFiles = Request.Files;
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
try
{
if (userPostedFile.ContentLength > 0)
{
Label1.Text += “<u>File #” + (i + 1) +
“</u><br>”;
Label1.Text += “File Content Type: ” +
userPostedFile.ContentType + “<br>”;
Label1.Text += “File Size: ” +
userPostedFile.ContentLength + “kb<br>”;
Label1.Text += “File Name: ” +
userPostedFile.FileName + “<br>”;
userPostedFile.SaveAs(filepath + “\\” +
System.IO.Path.GetFileName(userPostedFile.FileName));
Label1.Text += “Location where saved: ” +
filepath + “\\” +
System.IO.Path.GetFileName(userPostedFile.FileName) +
“<p>”;
}
}
catch (Exception Ex)
{
Label1.Text += “Error: <br>” + Ex.Message;
}
}
}

ASP.NET依托.net
framework类库,封装了汪洋的功能,使得上传文件非常简单,重要有以下二种为主方式。

复制代码

您大概感兴趣的稿子:

  • 珍藏的asp.net文件上传类源码
  • Asp.net
    文件上传类(获得文件后缀名,保存文件,参与文字水印)
  • asp.net 大文件上传 之
    改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)
  • asp.net slickupload
    使用办法(文件上传)
  • asp.net
    文件上传与刷新与asp.net页面与iframe之间的数额传输
  • asp.net
    模拟提交有文件上传的表单(通过http模拟上传文件)
  • asp.net
    多文本上传,包容IE6/7/八,提供整机代码下载
  • asp.net
    简便无刷新文件上传系统
  • asp.net(c#)开垦中的文件上传组件uploadify的行使格局(带进度条)
  • 用Fine Uploader+ASP.NET
    MVC实现ajax文件上传[代码示例]
  • Asp.Net
    无刷新文件上传并呈现进程条的贯彻形式及思路
  • ASP.NET
    MVC管理文件上传的小例子
  • asp.net 文件上传实例汇总
  • 钱柜999:NET文件上传的三种基本方法,文件上传示例整理。asp.net文件上传示例分享
  • asp.net
    fileupload控件上传文件与多文本上传
  • ASP.NET达成的简约易用文件上传类
  • ASP.NET对大文件上传的缓慢解决方案
  • asp.net批量多选文件上传化解方案
  • ASP.NET设计FTP文件上传的化解方案
  • asp.net文件上传带进度条达成案例(八种品格)
  • asp.net文件上传解决方案(图片上传、单文件上传、多文本上传、检查文件类型)

<form id=”form1″ runat=”server” enctype=”multipart/form-data”>
<input type=”file” name=”file” />
<asp:Button ID=”Button1″ runat=”server” Text=”上传”
OnClick=”Button1_Click” />
<asp:Label ID=”Label1″ runat=”server” Text=”” Style=”color:
Red”></asp:Label>
</form>

选取隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody和ReadEntityBody方法从IIS为ASP.NET创建的pipe里分块读取数据能够兑现公文上传。完毕格局如下:

protected void Button1_Click(object sender, EventArgs e)
{
if (file1.PostedFile.ContentLength > 0)
{
file1.PostedFile.SaveAs(Server.MapPath(“~/”) +
Path.GetFileName(file1.PostedFile.FileName));
Label一.Text = “上传成功!”;
}
}

本人以为最佳的措施是在HttpModule里分块读取文件同期维持页面激活的意况,那样就不会晚点,同有时间也能够追踪进程可能撤消上传,可能经过
HttpHandler完毕,在经过进程条给用户丰裕提醒的同不时间,也让开辟职员能够越来越好地决定文件大小以及上传进程中恐怕出现的不行。上传组件都以用那些艺术的,大家的采用有:

注意八个差别:

    System.Configuration.Configuration  
    config = WebConfigurationManager. 
    OpenWebConfiguration(“~”); 
    HttpRuntimeSection section = config.GetSection 
    (“system.web/httpRuntime”) as HttpRuntimeSection; 
    double maxFileSize = Math.Round 
    (section.MaxRequestLength / 1024.0, 1); 
    string errorString = string.Format(“Make sure  
    your file is under {0:0.#} MB.”, maxFileSize); 

<form id=”form1″ runat=”server”>
<asp:FileUpload ID=”FileUpload1″ runat=”server” />
<asp:Button ID=”Button1″ runat=”server” Text=”上传”
OnClick=”Button1_Click” />
<asp:Label ID=”Label1″ runat=”server” Text=”” Style=”color:
Red”></asp:Label>
</form>

一:FileUpload.FileName获取客户端上传文件名(不带路线),而file一.PostedFile.FileName
和Request.Files[“file”].FileName在分裂浏览器下景况不1:IE八下获得的是客户端上传文件的一点一滴限定名(带路线),谷歌(谷歌(Google))、苹果等浏览器下则仍为文件名(不带路线)。

protected void Button1_Click(object sender, EventArgs e)
{
if (Request.Files[“file”].ContentLength > 0)
{
Request.Files[“file”].SaveAs(Server.MapPath(“~/”) +
Path.GetFileName(Request.Files[“file”].FileName));
Label一.Text = “上传成功!”;
}
}

方法1:用Web控件FileUpload,上传到网址根目录。

二、FileUpload控件有HasFile品质,用于判别用户是不是选取了上传文件,而后边二种方式则须求经过推断上传文件大小ContentLength属性,当用户未有接纳上传文件时,该属性值为0。能够见见FileUpload封装程度越来越高,但灵活性也稍差。

复制代码

一、FileUpload.FileName获得客户端上传文件名(不带路径),而file一.PostedFile.FileName
和Request.Files[“file”].FileName在分歧浏览器下情形例外:IE八下获得的是客户端上传文件的完全限定名(带路线),谷歌(Google)、苹果等浏览器下则仍为文件名(不带路线)。

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;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

<form id=”form1″ runat=”server”>
<input type=”file” id=”file1″ runat=”server” />
<asp:Button ID=”Button1″ runat=”server” Text=”上传”
OnClick=”Button1_Click” />
<asp:Label ID=”Label1″ runat=”server” Text=”” Style=”color:
Red”></asp:Label>
</form>

 

方法一:用Web控件FileUpload,上传到网站根目录。
 

复制代码

形式三:用Html成分<input type=”file”
…/>,通过Request.Files上流传网址根目录。

好的化解方案

protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(Server.MapPath(“~/”) + FileUpload1.FileName);
Label壹.Text = “上传成功!”;
}
}

 代码如下

再有3个难点不怕管理ASP.NET大文件上传的晚点。这一个实际能够透过在运维时读取web.config中的httpRuntime节,并转化为
HttpRuntimeSection对象恐怕重写Page.OnError()来检验HTTP
Code(相应代码)是或不是为400来管理,这里不再赘述

System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);
Bitmap bitmap = new Bitmap(image, image.Width, image.Height);
Graphics g = Graphics.FromImage(bitmap);
float fontSize =
12.0f;//字体大小
float textWidth = text.Length * fontSize;//文本的长短
//下边定义三个矩形区域,现在在这几个矩形里面画上白底黑字
float rectX = 0;
float rectY = 0;
float rectWidth = text.Length * (fontSize + 8);
float rectHeight = fontSize + 8;
//表明矩形域
RectangleF textArea = new RectangleF(rectX, rectY, rectWidth,
rectHeight);
Font font = new Font(“草书”, fontSize);//定义字体
Brush whiteBrush = new SolidBrush(Color.惠特e);//白笔刷,画文字用
Brush blackBrush = new SolidBrush(Color.Black);//黑笔刷,画背景用
g.FillRectangle(blackBrush, rectX, rectY, rectWidth, rectHeight);
g.DrawString(text, font, whiteBrush, textArea);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Jpeg);
//输出管理后的图像,这里为了演示方便,小编将图纸呈今后页面中了
//Response.Clear();
//Response.ContentType = “image/jpeg”;
//Response.BinaryWrite(ms.ToArray());
g.Dispose();
bitmap.Dispose();
image.Dispose();
}
#endregion
}
}

    FileUploader.NET (MediaChase公司,$310以上)  
    RadUpload (Telerik公司,$249)  
    NeatUpload (免费,遵守LGPL协议)  

#region 检验文件是或不是合法
/// <summary>
/// 检查实验上传文件是或不是合法
/// </summary>
/// <param name=”fileExtends”>文件后缀名</param>
/// <returns></returns>
public static bool CheckFileExtends(string fileExtends)
{
bool status = false;
fileExtends = fileExtends.ToLower();
string[] fe = Enum.GetNames(typeof(FileType));
for (int i = 0; i < fe.Length; i++)
{
if (fe[i].ToLower() == fileExtends)
{
status = true;
break;
}
}
return status;
}
#endregion

 

ASP.NET的弊端

 代码如下

ASP.NET依托.net
framework类库,封装了大气的机能,使得上传文件非常轻便,主要有以下三种为主办法。

admin

网站地图xml地图