- 浏览: 94655 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
曾老师:
请问
dataFilter: function(data, ...
利用jquery.validate异步验证用户名是否存在 -
changningbuddha:
错误 1 在证书存储区中找不到清单签名证书。 myClock怎 ...
C#winform的小闹钟
问题一:文件大小的限制
默认情况下,asp.net的上传文件大小为2MB,一般情况下可以在配置文件(web.config)中自定义最大文件的值
<httpRuntime executionTimeout="300" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" />
这样上传文件的大小就变成了4Mb,可是不能无限的扩大maxRequestLength的值,因为asp.net会将全部文件载入内存后,再加以处理。可以用隐含的HttpWorkerRequest的GetPreloadedEntityBody(和ReadEntityBody)方法从IIS为asp.net建立的管道中分块读取数据
IServiceProvider provider=(IServiceProvider)HttpContext.Current;
HttpWorkerRequest wr=(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
byte []bs=wr.GetPreloadedEntityBody();
if(!wr.IsEntireEntityBodyIsPreloaded())
{
int n=1024;
byte[] bs2=new byte[n];
while(wr.ReadEntityBody(bs2,n)>0)
{
....
}
}
问题二:如果需要可以在配置文件中限制上传文件的格式(以图片为例)
<?XML version="1.0" encoding="gb2312" ?>
<Application>
<FileUpLoad>
<Format>.jpg|.gif|.png|bmp
</FileUpLoad>
</Application>
然后编辑相应方法
1.多文件上传
效果图:
后台代码:
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void bt_upload_Click(object sender, EventArgs e)
{
if ((FileUpload1.PostedFile.FileName == "" && FileUpload2.PostedFile.FileName == "")&&FileUpload3.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
HttpFileCollection myfiles = Request.Files;
for (int i = 0; i < myfiles.Count; i++)
{
HttpPostedFile mypost = myfiles[i];
try
{
if (mypost.ContentLength > 0)
{
string filepath = mypost.FileName;
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
string serverpath = Server.MapPath("images/") + filename;
mypost.SaveAs(serverpath);
this.lb_info.Text = "上传成功!";
}
}
catch (Exception error)
{
this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
}
}
}
}
}
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>多文件上传</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 343px">
<tr>
<td style="width: 100px">
多文件上传</td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload1" runat="server" Width="475px" />
</td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload2" runat="server" Width="475px" /></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload3" runat="server" Width="475px" /></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="一起上传" />
<asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="183px"></asp:Label></td>
<td style="width: 100px">
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
2.客户端检测文件类型(使用js在前台页面实现)
<script language="javascript">
function Check_FileType()
{
var str=document.getElementById("FileUpload1").value;
var pos = str.lastIndexOf(".");
var lastname = str.substring(pos,str.length)
if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif")
{
alert("您上传的文件类型为"+lastname+",图片必须为.jpg,.gif类型");
return false;
}
else
{
return true;
}
}
</script>
3.服务器端检测文件类型(以图片为例)
后台代码:
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void bt_upload_Click(object sender, EventArgs e)
{
try
{
if (FileUpload1.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
string filepath = FileUpload1.PostedFile.FileName;
if (IsAllowedExtension(FileUpload1) == true)
{
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
string serverpath = Server.MapPath("images/") + filename;
FileUpload1.PostedFile.SaveAs(serverpath);
this.lb_info.Text = "上传成功!";
}
else
{
this.lb_info.Text = "请上传图片";
}
}
}
catch (Exception error)
{
this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
}
}
//判断图片类型
public static bool IsAllowedExtension(FileUpload hifile)
{
string strOldFilePath = "", strExtension = "";
string[] arrExtension = { ".gif", ".jpg", ".jpeg", ".bmp", ".png" };
if (hifile.PostedFile.FileName != string.Empty)
{
strOldFilePath = hifile.PostedFile.FileName;
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
for (int i = 0; i < arrExtension.Length; i++)
{
if (strExtension.Equals(arrExtension[i]))
{
return true;
}
}
}
return false;
}
}
4.服务器端检测上传文件类型(可以检测真正文件名)
其实方法3并不好,因为用户可以把XXX.txt伪装为XXX.jpg。
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void bt_upload_Click(object sender, EventArgs e)
{
try
{
if (FileUpload1.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
string filepath = FileUpload1.PostedFile.FileName;
if (IsAllowedExtension(FileUpload1) == true)
{
string filename = filepath.Substring(filepath.LastIndexOf("\") + 1);
string serverpath = Server.MapPath("images/") + filename;
FileUpload1.PostedFile.SaveAs(serverpath);
this.lb_info.Text = "上传成功!";
}
else
{
this.lb_info.Text = "请上传图片";
}
}
}
catch (Exception error)
{
this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
}
}
//判断图片真正类型
public static bool IsAllowedExtension(FileUpload hifile)
{
System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
string fileclass = "";
byte buffer;
try
{
buffer = r.ReadByte();
fileclass = buffer.ToString();
buffer = r.ReadByte();
fileclass += buffer.ToString();
}
catch
{
}
r.Close();
fs.Close();
if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
{
return true;
}
else
{
return false;
}
}
}
5.上传文件的文件名唯一性处理(时间+SessionID)
说明:年月日时分秒+临时session+原文件名 如果大家怕还会重复可以加GUID
try
{
if (FileUpload1.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
string filepath = FileUpload1.PostedFile.FileName;
string filename = filepath.Substring(filepath.LastIndexOf("\") + 1);
string serverpath = Server.MapPath("images/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;
FileUpload1.PostedFile.SaveAs(serverpath);
this.lb_info.Text = "上传成功!";
}
}
catch (Exception error)
{
this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
}
注:GUID的方法:Guid myGuid=Guid.NewGuid();
6.上传图片成等比例缩略图
实现的方法类如下:
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class ImageThumbnail
{
public Image ResourceImage;
private int ImageWidth;
private int ImageHeight;
public string ErrorMessage;
public ImageThumbnail(string ImageFileName)
{
ResourceImage = Image.FromFile(ImageFileName);
ErrorMessage = "";
}
public bool ThumbnailCallback()
{
return false;
}
// 方法1,按大小
public bool ReducedImage(int Width, int Height, string targetFilePath)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
ReducedImage.Dispose();
return true;
}
catch (Exception e)
{
ErrorMessage = e.Message;
return false;
}
}
// 方法2,按百分比 缩小60% Percent为0.6 targetFilePath为目标路径
public bool ReducedImage(double Percent, string targetFilePath)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
ImageHeight = (ResourceImage.Height)*ImageWidth/ ResourceImage.Width;//等比例缩放
ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
ReducedImage.Dispose();
return true;
}
catch (Exception e)
{
ErrorMessage = e.Message;
return false;
}
}
}
后台的代码:
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void bt_upload_Click(object sender, EventArgs e)
{
try
{
if (FileUpload1.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
string filepath = FileUpload1.PostedFile.FileName;
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
string serverpath1 = Server.MapPath("images/") + filename;
string serverpath2 = Server.MapPath("images/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;
FileUpload1.PostedFile.SaveAs(serverpath1);
ImageThumbnail img = new ImageThumbnail(filepath);
img.ReducedImage(0.4, serverpath2);//0.4表示缩小40%
this.lb_info.Text = "上传成功!";
}
}
catch (Exception error)
{
this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
}
}
}
发表评论
-
缩略图
2011-05-16 11:19 1269缩略图 Web应用中最薄弱的环节就是传输,即速度问题。图片格 ... -
给图片加水印
2011-05-16 11:14 1426水印 在网络中发布资源时,比如图片,很多时候需要保护版权,即 ... -
.net绘图操作五
2011-05-16 11:02 1213统计图是信息管理系统常用的功能,常用的有饼图、柱形图、拆线图等 ... -
.net绘图操作四
2011-05-16 11:00 992绘制简单图形 简单图形是组成复杂图形的基础,通过本小节的例子 ... -
.net绘图操作三
2011-05-16 10:47 1598在.NET中图形包括以下两个步骤。 第一,创建Graphic ... -
.net绘图操作二
2011-05-16 09:57 13931.4 Brush Brush通常被称为,用于定义填充图形形 ... -
.net绘图操作一
2011-05-16 09:35 1498.NET对图形操作的支持类 ... -
(推荐)海量数据库的查询优化及分页算法方案
2011-04-28 18:14 1118建立一个web 应用,分页浏览功能必不可少。这个问题是数据库处 ... -
在你的Fckeditor安装Google map plugin
2011-04-28 18:13 1260Fckeditor是现在很常见的Html编辑器,他好用的地方 ... -
分享c#动态生成文字图片解决方案
2011-04-28 18:12 3519大家都知道我们如果想把网页上的文字做出比较炫的效果,便只能用P ... -
浅谈ASP.NET报表控件
2011-04-28 18:07 1903浅谈ASP.NET报表控件 作者:管理员 来源:51CT ... -
数据绑定控件导出到excel
2011-04-26 20:41 1393aspx页面代码 <div> ... -
数据库连接访问数据时出错
2011-04-22 09:39 1001超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种 ... -
文件上传中sever.mapPath和Request.PhysicalApplicationPath用法
2011-04-16 08:44 1141aspx页面代码: 添加一个上传控件 <p> ... -
文件的写和读操作方法总结
2011-01-02 21:55 898今天下午看了文件的相关操作,其中最常见的就是创建和读取的操作了 ... -
vs里面根据html模板页生成静态html页面
2011-01-02 17:19 1271在.net中生产静态的html页面主要用到的 IO流技术,先读 ... -
ckeditor的配置(html在线文本编辑器)
2011-01-01 09:11 1877一.ckeditor 3.3.1精简 1、删除_sam ... -
.net的开源cms系统网址收藏
2010-12-21 14:01 947这是我从别人博客上看 ... -
使用下拉列表对gridview分页
2010-12-10 16:32 915这是我看到别人的博客的,不说好不好,先记下来,以后还是有用;先 ... -
很完美的sql数据库访问助手类封装
2010-11-27 22:08 1427看到一本教材上对数据 ...
相关推荐
本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 首先,文件上传组件通常需要处理以下几个关键点: 1. **多文件选择**:用户可能...
本篇文章将详细探讨如何使用JSP(JavaServer Pages)和Flash上传工具实现多文件上传的示例——"MultifileUploadDemo"。 首先,我们需要理解JSP的基本概念。JSP是Java平台上的动态网页技术,它允许开发者将静态内容...
本篇将详细讲解如何在Android中实现文件上传,并结合“亲测可用”的控件来探讨具体实践。 首先,我们需要了解Android中的文件操作。Android系统提供了一系列API,允许开发者读取、写入和管理本地文件。例如,你可以...
本篇文章将深入探讨如何在Gin中实现文件上传,并结合curl命令演示上传过程。 首先,我们需要在Gin路由中定义一个处理文件上传的处理器。Gin框架提供了`c.Request.FormFile`方法来获取上传的文件。下面是一个简单的...
描述中的链接指向了CSDN博主johnjobs的一篇文章,这篇文章详细解释了如何在Struts2中实现文件上传。博主可能讨论了以下关键点: 1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该...
在【CSDN技术中心 jspSmartUpload上传下载全攻略(三、文件上传篇 ).htm】文件中,可能会详细讲解如何使用SmartUpload进行文件上传的步骤,包括配置HTML表单、在JSP中调用SmartUpload类、处理上传事件、保存文件到...
本篇主要介绍Linux环境下的文件上传方式,以及与之相关的编程概念。 首先,Linux系统提供了多种文件上传的方式: 1. **FTP(File Transfer Protocol)**:FTP是最传统的文件传输协议,通过FTP客户端连接到远程...
本篇文章将详细探讨`jqm文件上传`、`jqm的表单操作`、`jqm的ajax使用`以及相关的`文件操作demo`,帮助你掌握如何在jqm环境中实现文件,尤其是图片的上传功能。 1. **jqm文件上传** jQuery Mobile提供了对HTML5表单...
在实际开发中,你还需要考虑错误处理和异常捕获,确保在文件上传过程中遇到问题时能够妥善处理。此外,如果SharePoint的访问控制较为严格,可能需要使用ADAL(Active Directory Authentication Library)来获取访问...
本篇文章将详细探讨基于文件上传规范支持多文件上传的思路与实现方法。 首先,我们需要理解文件上传的基本流程。在HTTP协议中,文件上传通常依赖于`POST`请求,通过`multipart/form-data`编码类型来处理包含文件的...
本篇文章将深入探讨如何在WebWork框架下实现多文件上传,并结合实际案例进行解析。 首先,了解WebWork框架的基本原理是必要的。WebWork通过Action类处理HTTP请求,它将用户交互与业务逻辑分离,提供了一种优雅的...
本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...
本篇将详细讲解Java实现文件上传的相关知识点,主要关注如何处理文件及文本数据。 1. **Servlet API与Multipart请求** Java文件上传通常基于Servlet API,尤其是`HttpServletRequest`对象中的`getPart()`方法,它...
在本篇文章中,我们将深入探讨如何在WebAPI中实现文件上传,以及涉及的关键知识点。 首先,我们需要创建一个WebAPI控制器,该控制器将处理文件上传请求。控制器通常包含一个或多个公共方法,每个方法对应一个HTTP...
"前台进行多图片、多文件上传"通常涉及到HTML5的File API,这个API允许JavaScript直接操作用户的文件。在HTML中,我们可以使用`<input type="file" multiple>`元素来创建一个可选择多个文件的控件。通过监听`change`...
本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 首先,我们需要引入Hadoop相关的jar包。在描述中提到,附件包含了所有必要的jar包,这通常包括`hadoop-common`、`hadoop-hdfs`等核心组件的库文件...
本篇文章将详细讲解如何实现“多个文件上传的功能”,结合源码分析和工具的使用,帮助开发者更好地理解和实现这一实用功能。 首先,我们需要理解文件上传的基本原理。在HTML中,`<input type="file">`元素用于创建...
在给定的资源中,`temp.html`是一个示例页面,它演示了如何调用CFUpdate组件进行文件上传操作。`update.swf`是Flash文件,可能用于在不支持HTML5多文件上传的旧版浏览器中提供一个回退选项。 在ASP.NET 2.0.50727...
这篇文章将指导你如何使用Spring Boot来实现这两个操作。 首先,我们需要创建一个Spring Boot项目。在创建新项目时,需要添加必要的依赖。`spring-boot-starter-web`是Spring Boot Web项目的起步依赖,它包含了处理...
本篇文章将详细探讨如何使用SSM来实现文件上传,并关注提供的两个jar包——`commons-io-2.4.jar`和`commons-fileupload-1.2.2.jar`的作用。 1. **文件上传基本流程** 文件上传通常涉及以下几个步骤: - 前端创建...