C#如何实现阻止文件上传保存错误的另存和上传

在c#中(c/s)如何实现将上传的文件保存到指定的文件夹_百度知道
在c#中(c/s)如何实现将上传的文件保存到指定的文件夹
我有更好的答案
using(FileStream fs=File.Create(文件路径)){fs.Write(byte数组,0,数组长度);fs.Close();}不明白的参考MSDN中System.IO.File类的说明。
采纳率:54%
参考一下我写的上传的事件,我把保存的路径配置在web.cofig里面了,(需要注意的是超过一定的大小4M的话就会发生前台的异常,而且这个异常后台没办法捕获,网上有个家伙写的捕获的异常的方法我试了,根本没有用):
protected void btnSave_Click(object sender, System.EventArgs e)
HttpPostedFile postedFile = fileUploadInput.PostedF
String userType = this.ddlUserType.SelectedV
if (postedFile!=null)
//判断文件是否小于10Mb
if (postedFile.ContentLength & )
//上传文件并指定上传目录的路径
String serverPath = System.Configuration.ConfigurationSettings.AppSettings[&ReportPath&];
if(serverPath!=null)
String fileFullName = fileUploadInput.PostedFile.FileN
String fileName = Path.GetFileName(fileFullName);
if(getUserManager().isFileNameExist(fileName))
lblMsg.Text = &Upload Failed:File with same name already exists!&;
if (!Directory.Exists(serverPath))
Directory.CreateDirectory(serverPath);
postedFile.SaveAs(serverPath+fileName);
getUserManager().saveFileToDataBase(fileName,userType);
lblMsg.Text = &Upload Successfully!&;
lblMsg.Text = &Upload Failed: Path not found!&;
* FileUpLoad1.PostedFile.SaveAs(Server.MapPath(&~/Files/&)+ FileUpLoad1.FileName);
* 注意-&这里为什么不是:FileUpLoad1.PostedFile.FileName
* 而是:FileUpLoad1.FileName?
* 前者是获得客户端完整限定(客户端完整路径)名称
* 后者FileUpLoad1.FileName只获得文件名.
//当然上传语句也可以这样写(貌似废话):
//FileUpLoad1.SaveAs(@&D:\&+FileUpLoad1.FileName);
catch (Exception ex)
lblMsg.Text = &Upload Failed,Exception Occurs:& + ex.M
lblMsg.Text = &Upload Failed:The size of the file can not exceeded 10MB!&;
lblMsg.Text = &File not seleced!&;
找个c#无组件上传类,带demo的 然后修改下就好了
为您推荐:
其他类似问题
文件夹的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C#文件上传与下载的实现方法
转载 &更新时间:日 10:58:59 & 作者:小倔驴
这篇文章主要为大家详细介绍了C#文件上传与下载的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了C#实现文件上传与下载的具体代码,供大家参考,具体内容如下
C#实现文件上传代码:
public ActionResult Upload()
// var pathUrl = "http://" + Request.Url.A
var file = Request.Files["Filedata"];
var uploadFileName = file.FileN
string filePath = "/File/" + uploadFileN
string AbsolutePath = Server.MapPath(filePath);
file.SaveAs(AbsolutePath);
//将上传的东西保存
return Json(new { FileName = uploadFileName, FilePath = filePath });
C#实现文件下载功能:
public ActionResult DownLoad(string FileName)
string fileName = FileN//客户端保存的文件名
string filePath = Server.MapPath("/File/"+ FileName);//路径
//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", " filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return Json("");
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在C#中怎样实现保存的文本文件的功能(不是另存为)_百度知道
在C#中怎样实现保存的文本文件的功能(不是另存为)
我有更好的答案
用IO流中FileStream类 把数据写入文本文件
就可以了!
可以告诉我代码怎么写吗??我还是新手,不是太理解你说的意思
自己去这个地址看看吧!很多例子 。。如果还是看不明白 我有空给你写一个。。
采纳率:34%
来自团队:
最方便的要数使用Adobe Acrobat,点击Adobe Acrobat里的“导出”工具按钮,并选择“JPG”,PDF文档的所有页面就自动转换成一个个JPG格式文件。
如果你有Photoshop软件,可以这样操作,在Photoshop里打开PDF文档,Photoshop会让你选择打开那个页面,选定页面后打开,再另存为JPG格式图片文件。这个方法的缺点是一次只能抽取一页,需要重复操作,效率比较低。二、怎样将PDF文档转换成Word文档
在adobe acrobat里将要转换的PDF文档打开,操作菜单“文件”→“另存为”,将保存类型选为“Microsoft word”就能转换成Word文档。或者点击Adobe Acrobat里的“导出”工具按钮,导出文件类型选择“Word”,结果是一样的。
一款名字为e-PDF To Word Converter的软件专门用来将PDF文档转换成Word文档,网上有汉化特别版可供下载。
网站提供在线转换服务,只需要将待转换的PDF文档上传到这个网站,网站就会将载转换成的Word文档发到你的电子信箱里。
特别要说明的是,如果是通过扫描纸质文件生成的PDF文档,转换成Word文档以后得到的每一页都是插在Word文档里的图片,无法进行编辑。即便是由Word等其它可以编辑的电子文档生成的PDF文档,转换成Word文档以后,文字也是分布在一个个图文框里,如果版面稍复杂一些,文字还有可能重叠在一起,重新编辑的工作量还很大。三、怎样从PDF文档里导出文字
假如PDF文档是由Word等其它可以编辑的电子文档生成的,用adobe reader或adobe acrobat的“选择工具”选中文字后按“Ctrl”+“C”键,就可以将文字复制到剪贴板里,随便你粘贴到那里。adobe reader在安装后的默认状态下,“选择工具”是看不见的,需要操作菜单“工具”→“自定义工具栏”,在“选择工具”前打上钩,将它显现出来。
若要将整篇PDF文档的文字都导出来,在adobe reader里只要操作菜单“文件”→“另存为文本”,导出的文字就存到了一个文本文件里了。在adobe acrobat里则是操作菜单“文件”→“另存为”,保存类型选择“纯文本”,或者点击“导出”工具按钮,导出文件类型选择“更多格式”→“纯文本”。四、使用OCR文本识别技术导出文字
如果PDF文档是通过扫描纸质文件生成的,就不能够用上述简单的方法导出文字了,但也可以借助OCR文本识别技术来导出文字。
在adobe acrobat里可以操作菜单“文档”→“OCR文本识别”→“使用OCR识别文本”,经过识别以后,就可以用“选择工具”选中文字进行复制了。
adobe reader没有自带OCR文本识别功能,但可以这样操作,操作菜单“文件”→“打印”,打印机名称选择“Microsoft Office Document Image Writer”,这是一个随Microsoft Office 2003一起安装到计算机里的虚拟打印机,它将PDF文档打印到后缀为“mdi”的文件里,并自动打开,在打开的“mdi”文件里依次操作菜单“工具”→“使用OCR识别文本”和“工具”→“将文本发送到word”就可以将文字导出到一个Word文档里。
OCR文本识别技术的识别率取决于创建PDF文档时的扫描精度,那些字迹模糊不清的文档,能够正确识别出的文字也不会太多。五、怎样复制出PDF文档里的插图
用adobe reader或adobe acrobat打开PDF以后用“选择工具”选中插图后按“Ctrl”+“C”键,就可以将插图复制到剪贴板里。在adobe acrobat里操作菜单“高级”→“文档处理”→“导出所有图像”,就能够一次将文档里的所有图片全部导出成一个个图像文件。六、怎样复制PDF文挡里的表格
用adobe acrobat打开PDF以后用“选择工具”选中PDF文挡里的表格,右击鼠标,在弹出的菜单里点选“复制为表”,在Excel里操作菜单“选择性粘贴”,在对话框里选择“csv”后点击“确定”,PDF文挡里的表格就复制到Excel里了。也可以选中PDF文挡里的表格,右击鼠标,在弹出的菜单里点选“在Excel里打开”,表格就自动变成了Excel表。
如果需要将表格粘贴到Word文挡,应当采用“选择性粘贴”以“无格式文本”进行粘贴,粘贴之后选中这些数据,再操作菜单“表格”→“转换”→“文本转换表格”。
如果PDF文档是通过扫描纸质文件生成的,就不能复制成表格,只可以将表格复制成图片。
以上将PDF文档转换成Word文档以及从PDF文档里导出文字或图像的方法,取决于该文档没有加密对文档进行限制,如果文档已经加密进行了限制,只有在解密了以后才有可能进行。七、怎样去除word等软件里的Adobe Acrobat菜单栏
安装了Adobe Acrobat以后,在Word、Excel、AutoCAD软件的菜单里会多出几个Adobe Acrobat的菜单栏,其实这是Adobe Acrobat和这些应用软件的无缝结合,利用这些菜单可以方便地将这些应用软件创建的文档转换成PDF格式的文档,并能对转换的有关参数进行控制和调整。但是由于这些菜单占据了位置,不少使用者希望将它们去除。
去除的方法很简单,在“控制面板”里进入“添加和删除程序”,找到 Adobe Acrobat后点击“更改”,在“程序维护”对话框里选“修改”,到下一步的“自定义安装”里将Office、AutoCAD去掉即可。
安装Adobe Acrobat的时候如果选择“自定义安装”,就可以在安装过程里提前将Office、AutoCAD等剔除,就不会在Word、Excel、AutoCAD等软件里添加Adobe Acrobat菜单栏了另外,虚机团上产品团购,超级便宜
为您推荐:
其他类似问题
文本文件的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C#&不经保存,直接读取上传文件的内容
Page Language="C#"
AutoEventWireup="true"
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&script runat="server"&
protected void
btnUpload_Click(
object sender, EventArgs e )
(FileUpload1.PostedFile.InputStream.Length
Msg.Text =
"请选择文件。";
string FileName =
FileUpload1.FileN
(FileName.ToLower().IndexOf(".txt")
Msg.Text =
"请选择文本文件。";
FileUpload1.PostedFile.ContentL
byte[FileLen];
System.IO.Stream UpLoadStream =
FileUpload1.PostedFile.InputS
UpLoadStream.Read(input, 0,
UpLoadStream.Position =
System.IO.StreamReader sr =
System.IO.StreamReader(UpLoadStream,
System.Text.Encoding.Default);
Msg.Text =
"您上传的文件内容是:&br/&&br/&"
sr.ReadToEnd();
sr.Close();
UpLoadStream.Close();
UpLoadStream =
}&/script&
&html xmlns="http://www.w3.org/1999/xhtml"&
&head runat="server"&&title&不经保存,直接读取上传文件的内容&/title&&/head&&body&&form id="MengXianhui" runat="server"&&asp:FileUpload ID="FileUpload1" runat="server" /&&asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="btnUpload_Click"&&/asp:Button&
&p&&asp:Label ID="Msg" runat="server" ForeColor="Red"&&/asp:Label&&/p&
&/form&&/body&&/html&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。点滴积累【C#】—对上传文件的路径进行加密,以免将路径暴露在浏览器上,避免一些安全隐患! - 为程序员服务
点滴积累【C#】—对上传文件的路径进行加密,以免将路径暴露在浏览器上,避免一些安全隐患!
本事例是为解决在上传或下载文件时避免将路径暴露在外。在上传时将路径进行加密保存到DataTable或数据库中,在下载是再读取DataTable中加密数据进行解密下载。
【前台代码】
&%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUpload.aspx.cs" Inherits="FilePathEncrypt.FileUpload" %&
&!DOCTYPE html&
&html xmlns="http://www.w3.org/1999/xhtml"&
&head runat="server"&
&meta http-equiv="Content-Type" content="text/ charset=utf-8" /&
&title&&/title&
&%--&form id="form1" runat="server" name="formFile" method="post" action="/FileUpload.aspx" target="frameFile" enctype="multipart/form-data"&--%&
&form id="form1" runat="server"&
&%--&input type="text" id="textID" name="txtName" /&--%&
&%--&input type="file" id="fileUp" name="fileUp" /&--%&&&&%--&input type="submit" value="确认上传" /&--%&
&%--&asp:TextBox ID="TextBox1" runat="server"&&/asp:TextBox&--%&
&asp:FileUpload ID="FileUpload1" runat="server" /&&&&asp:Button ID="Button1" runat="server" Text="确认上传" OnClick="Button1_Click" /&
&asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="132px" Width="251px" CellPadding="4" ForeColor="#333333" GridLines="None"&
&AlternatingRowStyle BackColor="White" /&
&asp:BoundField DataField="ID" HeaderText="ID" /&
&asp:BoundField
DataField="FileName" HeaderText="名称" /&
&asp:BoundField
DataField="FileType" HeaderText="类型" /&
&asp:BoundField
DataField="FilePath_Security" HeaderText="路径加密" /&
&asp:TemplateField HeaderText="下载"&
&ItemTemplate&
&asp:HyperLink ID="HyperLink1" NavigateUrl='&%# Eval("FilePath_Security") %&'
runat="server"&下载&/asp:HyperLink&
&/ItemTemplate&
&/asp:TemplateField&
&/Columns&
&EditRowStyle BackColor="#2461BF" /&
&FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /&
&HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /&
&PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /&
&RowStyle BackColor="#EFF3FB" /&
&SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /&
&SortedAscendingCellStyle BackColor="#F5F7FB" /&
&SortedAscendingHeaderStyle BackColor="#6D95E1" /&
&SortedDescendingCellStyle BackColor="#E9EBEF" /&
&SortedDescendingHeaderStyle BackColor="#4870BE" /&
&/asp:GridView&
&iframe id="frameFile" name="frameFile" style="display:"&&/iframe&
【后台代码】
using System.Collections.G
using System.D
using System.IO;
using System.L
using System.W
using System.Web.UI;
using System.Web.UI.WebC
using WooBase.C
namespace FilePathEncrypt
public partial class FileUpload : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
DataTable dt = new DataTable();
dt = NewTable();
GridView1.DataSource =
GridView1.DataBind();
/// &summary&
/// 构建DataTable
/// &/summary&
/// &returns&&/returns&
public DataTable NewTable()
DataTable dt = new DataTable();
dt.TableName = "SaveData";
DataColumn col = new DataColumn("ID", typeof(Int32));
col.AutoIncrement =
col.AutoIncrementSeed = 1;
col.AutoIncrementStep = 1;
dt.Columns.Add(col);
dt.Columns.Add("FileName", typeof(String));
dt.Columns.Add("FileType", typeof(String));
dt.Columns.Add("FilePath_Security", typeof(String));
DataRow dr = dt.NewRow();
dr["FileName"] = "青苹果.jpg";
dr["FileType"] = ".jpg";
dr["FilePath_Security"] = "DownLoad.aspx?cmd=6A6B26EC4E4AD";
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1["FileName"] = "青苹果.txt";
dr1["FileType"] = ".txt";
dr1["FilePath_Security"] = "DownLoad.aspx?cmd=6A6B26EC4E4AD";
dt.Rows.Add(dr1);
protected void Button1_Click(object sender, EventArgs e)
string FullName = FileUpload1.PostedFile.FileN
if (!string.IsNullOrEmpty(FullName))
FileInfo fi = new FileInfo(FullName);
string name = fi.N//获取word名称
string type = fi.E//获取word类型
string SavePath = Server.MapPath("UploadFile\\");//word保存到文件夹下
if (!Directory.Exists(SavePath))
//判断文件夹是否存在,如果不存在则创建
Directory.CreateDirectory(SavePath);
this.FileUpload1.PostedFile.SaveAs(SavePath + "\\" + name + ".wdata");//保存路径
string SecurityPath = setPath("UploadFile\\" + name + ".wdata");//加密
DataTable dt = new DataTable();
dt = NewTable();
if (name != "")
DataRow dr = dt.NewRow();
dr["FileName"] =
dr["FileType"] =
dr["FilePath_Security"] = SecurityP
dt.Rows.Add(dr);
GridView1.DataSource =
GridView1.DataBind();
Response.Write("&script&alert('请选择文件');&/script&");
/// &summary&
/// 加密路径
/// &/summary&
/// &param name="path"&&/param&
/// &returns&&/returns&
public static string setPath(string path)
string SetPath = "";
SetPath = "DownLoad.aspx?cmd=" + Security.Encrypt_Des2(path) + "\"";
return SetP
catch (Exception ex)
【后台加密函数代码】
using System.Collections.G
using System.L
using System.T
using System.IO;
using System.T
using System.Security.C
namespace WooBase.Common
public class Security
的加密方法
public static string Encrypt_Des(string cleanString)
框架提供的对称加密类需要一个密钥和一个新的
来加密和解密数据。
//每当使用默认的构造函数创建其中一个托管对称加密类的新实例时,就会自动创建新的密钥和
位密钥、64
位块来加密和解密数据。每个数据块迭代
次以生成加密文本。
//初始化向量(IV)
用来第一次对数据块进行加密
byte[] KEY_64 = { 42, 16, 93, 156, 78, 14, 218, 31 }; //
byte[] IV_64 = { 55, 103, 246, 79, 36, 23, 167, 0 }; //
初始化向量(IV)
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, provider.CreateEncryptor(KEY_64, IV_64), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(cleanString);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, int.Parse((ms.Length.ToString())));
public static string Encrypt_Des2(string cleanString)
string result = string.E
byte[] KEY_64 = { 42, 16, 93, 156, 78, 14, 218, 31 }; //
byte[] IV_64 = { 55, 103, 246, 79, 36, 23, 167, 0 }; //
初始化向量(IV)
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, provider.CreateEncryptor(KEY_64, IV_64), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(cleanString);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
string tmpS = Convert.ToBase64String(ms.GetBuffer(), 0, int.Parse((ms.Length.ToString())));
byte[] bTemp = System.Text.Encoding.Default.GetBytes(tmpS);
for (int i = 0; i & bTemp.L i++)
result += bTemp[i].ToString("X");
的解密方法
public static string Decrypt_Des(string encryptedString)
byte[] KEY_64 = { 42, 16, 93, 156, 78, 14, 218, 31 };
byte[] IV_64 = { 55, 103, 246, 79, 36, 23, 167, 0 };
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
byte[] buffer = Convert.FromBase64String(encryptedString);
MemoryStream ms = new MemoryStream(buffer);
CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(KEY_64, IV_64), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
public static string Decrypt_Des2(string encryptedString)
byte[] b = new byte[encryptedString.Length / 2];
for (int i = 0; i & encryptedString.Length / 2; i++)
string strTemp = encryptedString.Substring(i * 2, 2);
b[i] = Convert.ToByte(strTemp, 16);
string str = System.Text.Encoding.Default.GetString(b);
byte[] KEY_64 = { 42, 16, 93, 156, 78, 14, 218, 31 };
byte[] IV_64 = { 55, 103, 246, 79, 36, 23, 167, 0 };
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
byte[] buffer = Convert.FromBase64String(str);
MemoryStream ms = new MemoryStream(buffer);
CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(KEY_64, IV_64), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
【后台下载类代码】
2 using System.Collections.G
3 using System.IO;
4 using System.L
5 using System.W
6 using System.Web.UI;
7 using System.Web.UI.WebC
8 using Woo.U
9 using WooBase.C
12 namespace FilePathEncrypt
public partial class DownLoad : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
//访问此页进行解密下载
//例如:AjaxPage/WooCommon/DownLoad.aspx?cmd=BC6B2FAEC726E4D766C2B4DF4A2F6C2F526CD64C666B4DAB2F453D
var cmd = PageUtility.GetRequestString("cmd");
if (!string.IsNullOrEmpty(cmd))
cmd = cmd.Replace("\"", "").Trim();
cmd = Security.Decrypt_Des2(cmd).ToLower();
cmd = cmd.Replace("/", "\\").Replace("\"", "");
string dir = HttpContext.Current.Request.PhysicalApplicationP
if (File.Exists(dir + cmd))
int finded = (dir + cmd).LastIndexOf(".wdata");
string FileName = (dir + cmd).Remove(finded);
string ext = System.IO.Path.GetExtension(FileName);
string fname = System.IO.Path.GetFileName(FileName);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer =
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "filename=" + HttpUtility.UrlEncode(fname, System.Text.Encoding.GetEncoding("UTF-8")));
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
HttpContext.Curre
又一个码农站点
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 上传文件保存到服务器 的文章

 

随机推荐