<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">
<title>无标题文档</title>
</head>
<body>
<%
'On Error Resume Next
Response.Expires=0
if Request.TotalBytes then
set a=createobject("adodb.stream")
a.Type=1
a.Open
a.write Request.BinaryRead(Request.TotalBytes)
a.Position=0
b=a.Read
c=chrB(13)&chrB(10)
d=clng(instrb(b,c))
e=instrb(d+1,b,c)
set f=createobject("adodb.stream")
f.type=1
f.open
a.Position=d+1
a.copyto f,e-d-3
f.Position=0
f.type=2
f.CharSet="GB2312"
g=f.readtext
f.Close
h=mid(g,instrRev(g,"\")+1,e)
i=instrb(b,c&c)+4
j=instrb(i+1,b,leftB(b,d-1))-i-2
if j <1 then
set f =nothing
set a =nothing
response.write "未选择要上传的文件<a href='?'>重新上传</a>"
response.end
end if
f.Type=1
f.Open
a.Position=i-1
a.CopyTo f,j
h = Mid(h, InStrRev(h, "filename=""") + 10) '这是我帮你添加的,文件名的获取没有正确
f.SaveToFile server.mappath("/EXCEL/"&h),2
f.Close
set f=Nothing
a.Close
set a=Nothing
'response.write "<a href="&Server.URlEncode(h)&">"&h&"</a>"
end if
If Err.number<>0 Then
response.Write err.number
response.Write err.Description
Response.End
End If
%>
<script language="javascript">
function checkupload() {
if (document.upload_form.fe.value == "") {
alert("未选择要上传的文件")
return false
}
}
</script>
<form name="upload_form" enctype="multipart/form-data" method="post" onsubmit="return(checkupload())">
<input type="file" name="fe"/>
<input type="submit" value="上传" name="B1"/>
</form>
</body>
</html>
有两种方法:1.存储是采用随机文件名,如:2012010713062315.jpg [也就是:年份+月份+日期+小时+分钟+秒+毫秒+随机数 + 文件后缀]。再用FSO检查服务器的文件是否已经存在,如果存在则重新生成文件名末尾的随机数。2.上传时用FSO检查服务器的文件是否已经存在,如果存在则提示文件已经存在,重命名后再上传。private string ftpServerIP = "服务器ip"//服务器ipprivate string ftpUserID = "ftp的用户名"//用户名
private string ftpPassword = "ftp的密码"//密码
//filename 为本地文件的绝对路径
//serverDir为服务器上的目录
private void Upload(string filename,string serverDir)
{
FileInfo fileInf = new FileInfo(filename)
string uri = string.Format("ftp://{0}/{1}/{2}", ftpServerIP,serverDir,fileInf.Name)
FtpWebRequest reqFTP
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri))
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword)
// 默认为true,连接不会被关闭
// 在一个命令之后被执行
reqFTP.KeepAlive = false
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile
// 指定数据传输类型
reqFTP.UseBinary = true
// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length
// 缓冲大小设置为2kb
int buffLength = 2048
byte[] buff = new byte[buffLength]
int contentLen
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead()
try
{
// 把上传的文件写入流
Stream strm = reqFTP.GetRequestStream()
// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength)
// 流内容没有结束
while (contentLen != 0)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen)
contentLen = fs.Read(buff, 0, buffLength)
}
// 关闭两个流
strm.Close()
fs.Close()
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message, "Upload Error")
Response.Write("Upload Error:" + ex.Message)
}
}
调用方法
string filename = "D:\\test.txt" //本地文件,需要上传的文件
string serverDir = "img" //上传到服务器的目录,必须存在
Upload(filename,serverDir)
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)