.NET 图片上传接收类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Configuration;
using System.Web.Configuration;
using System.Collections;
using System.Text.RegularExpressions; namespace Visaok.ul.UserCenter.dialogs.attachment
{
public partial class upfile : System.Web.UI.Page
{
public string s; private string state = "SUCCESS"; protected void Page_Load(object sender, EventArgs e)
{ } protected void Button1_Click(object sender, EventArgs e)
{ string[] filetype = { ".rar", ".doc", ".docx", ".zip", ".pdf", ".txt", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".mov", ".wmv", ".mp4", ".webm",".jpg" }; //文件允许格式
int size = ; //文件大小限制,单位MB,同时在web.config里配置环境默认为100MB string uploadpath = Request.MapPath("~/"); //取得网站根目录路径 //格式验证
if (checkType(filetype))
{
//不允许的文件类型
state = "\u4e0d\u5141\u8bb8\u7684\u6587\u4ef6\u7c7b\u578b";
}
//大小验证
if (checkSize(size))
{
//文件大小超出网站限制
state = "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u7f51\u7ad9\u9650\u5236";
} //保存图片
if (state == "SUCCESS")
{
//目录创建
string Path = DateTime.Now.ToString("yyMMddHHmmss") + (new Random().Next(, ).ToString(""));
createFolder(uploadpath + "Peerfile\\"+ Path); if (string.IsNullOrEmpty(FileUpload1.FileName)) { Response.Write("未选择文件"); return; }
FileUpload1.SaveAs(uploadpath + "Peerfile\\" + Path+"\\" + FileUpload1.FileName); //存储文件到文件夹
FileInfo pathinfo = new FileInfo(uploadpath + "Peerfile\\" + Path + "\\" + FileUpload1.FileName.ToString());
string pathtwo = WebConfigurationManager.AppSettings["path"];
string RootDirectory = WebConfigurationManager.AppSettings["RootDirectory"];
s = " <b><a href=\"" + pathtwo + Path + "/" + pathinfo.Name + "\"><img style=\"display:inline-block;\" src=\"" + RootDirectory + "Peer/PeerCenter/dialogs/attachment/images/icon_rar.gif\">" + pathinfo.Name + "</a></b> ";
div1.InnerHtml = pathinfo.Name + "上传成功";
}
else
{
div1.InnerHtml = "上传的格式不允许";
}
} /**
* 获取文件信息
* @param context
* @param string
* @return string
*/ public string getOtherInfo(HttpContext cxt, string field)
{
string info = null;
if (cxt.Request.Form[field] != null && !String.IsNullOrEmpty(cxt.Request.Form[field]))
{
info = field == "fileName" ? cxt.Request.Form[field].Split(',')[] : cxt.Request.Form[field];
}
return info;
} /**
* 重命名文件
* @return string
*/ private string reName()
{
return System.Guid.NewGuid() + getFileExt();
} /**
* 文件类型检测
* @return bool
*/ private bool checkType(string[] filetype)
{
string currentType = getFileExt();
return Array.IndexOf(filetype, currentType) == -;
} /**
* 文件大小检测
* @param int
* @return bool
*/ private bool checkSize(int size)
{
//ContentLength
return FileUpload1.PostedFile.ContentLength>= (size * * );
} /**
* 获取文件扩展名
* @return string
*/ private string getFileExt()
{
string[] temp = FileUpload1.FileName.Split('.');
return "." + temp[temp.Length - ].ToLower();
} /**
* 按照日期自动创建存储文件夹
*/ private void createFolder(string fintPath)
{
if (!Directory.Exists(fintPath))
{
Directory.CreateDirectory(fintPath);
}
} /**
* 删除存储文件夹
* @param string
*/ public void deleteFolder(string path)
{
//if (Directory.Exists(path))
//{
// Directory.Delete(path, true);
//}
} public static string Format(string format, string filename)
{
if (String.IsNullOrWhiteSpace(format))
{
format = "{filename}{rand:6}";
}
string ext = Path.GetExtension(filename);
filename = Path.GetFileNameWithoutExtension(filename);
format = format.Replace("{filename}", filename);
format = new Regex(@"\{rand(\:?)(\d+)\}", RegexOptions.Compiled).Replace(format,
new MatchEvaluator(delegate(Match match)
{
var digit = ;
if (match.Groups.Count >)
{
digit =Convert.ToInt32(match.Groups[].Value);
}
var rand = new Random();
return rand.Next((int)Math.Pow(,digit),(int)Math.Pow(,digit +)).ToString();
}));
format = format.Replace("{time}", DateTime.Now.Ticks.ToString());
format = format.Replace("{yyyy}", DateTime.Now.Year.ToString());
format = format.Replace("{yy}", (DateTime.Now.Year % ).ToString("D2"));
format = format.Replace("{mm}", DateTime.Now.Month.ToString("D2"));
format = format.Replace("{dd}", DateTime.Now.Day.ToString("D2"));
format = format.Replace("{hh}", DateTime.Now.Hour.ToString("D2"));
format = format.Replace("{ii}", DateTime.Now.Minute.ToString("D2"));
format = format.Replace("{ss}", DateTime.Now.Second.ToString("D2"));
var invalidPattern = new Regex(@"[\\\/\:\*\?\042\<\>\|]");
format = invalidPattern.Replace(format, "");
return format + ext;
}
} }
.NET 图片上传接收类的更多相关文章
- ASP.NET 图片上传工具类 upload image简单好用功能齐全
使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui ...
- PHP 图片上传工具类(支持多文件上传)
====================ImageUploadTool======================== <?php class ImageUploadTool { private ...
- 基于WebImage的图片上传工具类
支持缩略图和水印. using System; using System.IO; using System.Linq; using System.Web; using System.Web.Helpe ...
- ashx图片上传接收
发送数据流方法 /// <summary> /// PostBinaryData /// </summary> /// <param name="url&quo ...
- JSP图片上传 公共工具类
需要jsmartcom_zh_CN.jar支持. 下载地址: http://files.cnblogs.com/simpledev/jsmartcom_zh_CN.rar <%@page imp ...
- PHP图片上传类
前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...
- android批量文件上传(android批量图片上传)
项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功: 1.android客户端+springMVC服务端:服务端 ...
- thinkjs升级到3.0后的图片上传
似乎当thinkjs升级到3.0后,才接手了一个项目.只是在实际运用过程中,还是发现了与2.2的些许差别——今天先分享关于图片上传的一些问题. 1.上传文件,我们选择了jQuery的插件:http:/ ...
- spring boot图片上传至远程服务器并返回新的图片路径
界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成. //UUIDUtils public class UUIDUtils { public static Strin ...
随机推荐
- (C#)Windows Shell 外壳编程系列2 - 解释,从“桌面”开始展开
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一篇:(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 让我们详细解释一下 Shell 编程中最基本 ...
- BZOJ3262:陌上花开
浅谈离线分治算法:https://www.cnblogs.com/AKMer/p/10415556.html 题目传送门:https://lydsy.com/JudgeOnline/problem.p ...
- Java实现Stack类
Java实现Stack类 import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Sc ...
- Azure VMSS ---- PowerShell创建标准镜像的VMSS集群
VMSS的创建可以采用Portal.Powershell.Azure CLI或者Template. 但目前Portal创建有很多限制,本文将介绍如何用PowerShell来创建VMSS的集群. 具体的 ...
- check: 获得所有呗选中的checked标签的元素值 mapArrayElement(arrEles)
首先引用: <script src="../js/myjs/mapArrayElement.js"></script> 然后在<javascript& ...
- 分布式代码管理github
Git是世界上最先进的分布式版本的控制系统,特点是:简单大气上档次. Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了.
- Mongodb 5节点异地两中心故障转移恢复测试案例
Mongodb5节点异地两中心故障转移恢复测试案例 架构方式:5节点,主中心(2数据1仲裁),备中心(1数据1仲裁) 1基本情况 操作系统:Red Hat Enterprise Linux Serve ...
- Android Studio 第一次配置及其使用
第一次使用Android Studio时你应该知道的一切配置 http://www.cnblogs.com/smyhvae/p/4390905.html gradle V2.10 版: http:// ...
- DAY15-HTTP协议简述
HTTP协议 一.HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网 ...
- 关于fragment生命周期的两张图片
图1,fragment的生命周期,图2,fragment生命周期对应activity的生命周期