zoukankan
html css js c++ java
图片上传/下载,DOC.xls文档下载的方法
上传:
Code
#region
上传文件
protected
string
UpPicFile(System.Web.UI.WebControls.FileUpload FileUpControl,
ref
string
fileType)
{
if
(FileUpControl.HasFile)
{
string
strErr
=
""
;
#region
验证
if
(FileUpControl.PostedFile
==
null
)
{
strErr
+=
"
对不起,上传文件不能为空!\\n
"
;
}
int
size
=
FileUpControl.PostedFile.ContentLength;
//
大小
if
(size
<
1
)
{
strErr
+=
"
对不起,上传文件不能为空!\\n
"
;
}
if
(size
>
10485760
)
{
strErr
+=
"
对不起,文件大小不能大于10M!\\n
"
;
}
if
(strErr
!=
""
)
{
QDHotel.Common.MessageBox.Show(
this
, strErr);
return
null
;
}
#endregion
string
UploadFileType
=
FileUpControl.PostedFile.ContentType;
string
UpFileName
=
FileUpControl.FileName;
string
picname
=
DateTime.Now.ToString(
"
yyyyMMddHHmmss
"
)
+
UpFileName;
fileType
=
UploadFileType;
#region
不同类型UploadFileType
switch
(UploadFileType)
{
case
"
image/gif
"
:
case
"
image/bmp
"
:
case
"
image/pjpeg
"
:
{
Stream StreamObject
=
FileUpControl.PostedFile.InputStream;
//
建立数据流对像
System.Drawing.Image myImage
=
System.Drawing.Image.FromStream(StreamObject);
int
w
=
myImage.Width;
int
h
=
myImage.Height;
}
break
;
case
"
application/msword
"
:
case
"
application/vnd.ms-excel
"
:
break
;
default
:
strErr
+=
"
对不起,不允许该文件格式上传!\\n
"
;
break
;
}
#endregion
if
(strErr
!=
""
)
{
QDHotel.Common.MessageBox.Show(
this
, strErr);
return
null
;
}
try
{
string
path
=
ADUploadFolder
+
picname;
path
=
Server.MapPath(path);
FileUpControl.PostedFile.SaveAs(path);
return
picname;
}
catch
//
(Exception ex)
{
return
null
;
}
}
else
{
return
null
;
}
}
#endregion
下载
private
void
ViewImage(
string
fileType,
string
fileName,
bool
forceDownload)
{
if
(fileType
==
"
application/msword
"
||
fileType
==
"
application/vnd.ms-excel
"
)
{
//
Response.Redirect("UploadPic/" + fileName);
//
return;
System.IO.FileStream r
=
new
System.IO.FileStream(Server.MapPath(
"
UploadPic/
"
+
fileName), System.IO.FileMode.Open);
//
设置基本信息
Response.Buffer
=
false
;
Response.AddHeader(
"
Connection
"
,
"
Keep-Alive
"
);
Response.ContentType
=
"
application/octet-stream
"
;
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
System.IO.Path.GetFileName(Server.MapPath(
"
UploadPic/
"
+
fileName)));
Response.AddHeader(
"
Content-Length
"
, r.Length.ToString());
while
(
true
)
{
//
开辟缓冲区空间
byte
[] buffer
=
new
byte
[
1024
];
//
读取文件的数据
int
leng
=
r.Read(buffer,
0
,
1024
);
if
(leng
==
0
)
//
到文件尾,结束
break
;
if
(leng
==
1024
)
//
读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
Response.BinaryWrite(buffer);
else
{
//
读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
byte
[] b
=
new
byte
[leng];
for
(
int
i
=
0
; i
<
leng; i
++
)
b[i]
=
buffer[i];
Response.BinaryWrite(b);
}
}
r.Close();
//
关闭下载文件
Response.End();
//
结束文件下载
}
Response.Clear();
if
(forceDownload)
{
Response.AppendHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
fileName);
}
else
{
Response.AppendHeader(
"
Content-Disposition
"
,
"
filename=
"
+
fileName);
}
using
(System.Drawing.Image image
=
System.Drawing.Image.FromFile(MapPath(picDic
+
fileName)))
{
if
(image.RawFormat.Equals(ImageFormat.Bmp))
{
Response.ContentType
=
"
image/bmp
"
;
}
else
{
if
(image.RawFormat.Equals(ImageFormat.Gif))
{
Response.ContentType
=
"
image/gif
"
;
}
else
{
if
(image.RawFormat.Equals(ImageFormat.Jpeg))
{
Response.ContentType
=
"
image/jpeg
"
;
}
else
{
if
(image.RawFormat.Equals(ImageFormat.Png))
{
Response.ContentType
=
"
image/png
"
;
}
else
{
Response.ContentType
=
"
application/octet-stream
"
;
}
}
}
image.Save(Response.OutputStream, image.RawFormat);
}
}
}
查看全文
相关阅读:
C#里partial关键字的作用
Xamarin.Android之布局文件智能提示问题
C语言文件操作
CArray
Unicode和多字节的相互转换
可变参数问题研究
VC6.0支持UNICODE的步骤
Unicode编码表
@@
内存映射文件原理
原文地址:https://www.cnblogs.com/weichuo/p/1206620.html
最新文章
【刷题】数组与链表 & ArrayList和LinkedList Array和ArrayList
【刷题】排序的稳定和不稳定
LeetCode之“链表”:Sort List
LeetCode之“链表”:在O(1)时间删除链表节点
LeetCode之“链表”:Rotate List
LeetCode之“链表”:Reverse Nodes in k-Group
LeetCode之“链表”:Remove Nth Node From End of List
LeetCode之“链表”:Partition List
LeetCode之“链表”:Remove Duplicates from Sorted List && Remove Duplicates from Sorted List II
LeetCode之“链表”:Intersection of Two Linked Lists
热门文章
LeetCode之“链表”:Add Two Numbers
LeetCode之“链表”:Merge Two Sorted Lists && Merge k Sorted Lists
dorado 的学习位置、控件使用方法查找、示例演示地址
去除TFS版本控制
Java
WCF 数据契约(DataContract)
C# using
C#操作SQL Server数据库
WCF ServiceContract,OperationContract
C# 浅谈 接口(Interface)的作用
Copyright © 2011-2022 走看看