ASP实现文件上传的方法
在ASP中,文件上传是一个常见的需求,本文将详细介绍三种ASP文件上传方法:服务器组件上载、无组件上载和浏览器组件上载,每种方法都有其优缺点及适用场景,读者可以根据自己网站的条件和需求来选择合适的方法。
### 一、服务器组件上载方式
#### 1.
服务器组件上载方式以sa-fileup组件、aspupload组件、lyfupload组件为代表,这些组件实现了各种文件上载所需要的功能,如上载大文件、限制上载文件的大小、上载多个文件、显示上载进度条、能够将文件保存到数据库中等。
#### 2. 优点
运行稳定,功能强大
对浏览器没有任何要求
#### 3. 缺点
需要在服务器上注册组件,如果网站管理员对服务器拥有管理权限,则该方法应该是首选。
#### 4. 示例代码
“`asp
<%
Dim upload, file, formPath, path, fileName, iNum, iCnt, iSize, iRandomNum, myFileName, myFileSaveName, iFreeFileName, iError, iUploadedSize, iFormData, iFormKey, iFormValue, objFSO
Set upload = Server.CreateObject(“Persits.Upload.1”)
Set file = upload.RequestBinField(“file”, GetByteArray(“file”))
path = Server.MapPath(“.”) & “\upload”
If Not FileSystemObj.FolderExists(path) Then MkDir path
myFileName = PathExtractFileName(file.FileName)
myFileSaveName = path & “\” & myFileName
Call file.Save(myFileSaveName)
Response.Write “
文件上传成功!
“
Set upload = Nothing
Set file = Nothing
%>
Sub GetByteArray(strFile)
Dim binStream, byteArr()
Set binStream = CreateObject(“ADODB.Stream”)
binStream.Type = 1 ‘二进制类型
binStream.Open
binStream.LoadFromFile Server.MapPath(“.” & strFile)
byteArr = binStream.Read()
binStream.Close
GetByteArray = byteArr
End Sub
%>
“`
### 二、无组件上载方式
#### 1.
无组件上载方式以化境无组件上传、无惧无组件上传、先锋无组件上传等为代表,这种方法是网络上应用最多最广的方法,并且有很多应用实例的源代码。
#### 2. 优点
对服务器和浏览器均没有任何要求,适应性强,应用范围广。
#### 3. 缺点
上载文件的时候没有进度条的显示,并且IIS默认不支持大文件上传(>200K)。
#### 4. 示例代码
“`asp
<%@ Language="VBScript" CodePage="936" %>
<%
Sub InputFileUploadButton_Click(Sender As Object, E As EventArgs)
Dim files As HttpFileCollection
files = Request.Files
Dim filePath As String = Server.MapPath(“~/UploadFiles/”)
If files.Count > 0 Then
Dim fileName As String = files(0).FileName
files(0).SaveAs(Path.Combine(filePath, fileName))
Response.Write(“
上传成功
“)
Else
Response.Write(“
未获取到Files:” & files.Count.ToString() & “
“)
End If
End Sub
%>
“`
### 三、浏览器组件上载方式
#### 1.
浏览器组件上载方式使用AJAX异步提交数据,后台使用一个.ashx文件进行处理,这种方式共用一个文件,ajax传入的url参数中加一个method来区分哪种方式传过来的。
#### 2. 优点
适合租用空间且需上载大文件。
#### 3. 示例代码
“`asp
<%@ WebHandler Language="C#" Class="FileUploader" %>
using System;
using System.Web;
public class FileUploader : IHttpHandler {
public void ProcessRequest(HttpContext context) {
string method = context.Request.QueryString[“method”];
switch (method) {
case “ajaxFileUpload”:
ajaxFileUpload(context);
break;
case “formDataUpload”:
formDataUpload(context);
break;
default:
break;
}
}
private void formDataUpload(HttpContext context) {
HttpFileCollection files = context.Request.Files;
foreach (string key in files.AllKeys) {
HttpPostedFile file = files[key];
string filePath = context.Server.MapPath(“~/Uploads/”);
file.SaveAs(filePath + file.FileName);
context.Response.Write(“
文件上传成功!
“);
}
}
“`
### 四、相关问题与解答
#### 1. 如何更改ASP上传文件大小限制?
可以通过修改`web.config`文件中的`httpRuntime`元素的`maxRequestLength`属性来增加整个应用程序所允许的最大文件大小,设置最大文件大小为30MB:
“`xml
“`
`maxRequestLength`表示可上传文件的最大值,`executionTimeout`表示ASP.NET关闭前允许发生的上载秒数,若要增加指定页所允许的最大文件大小,可以在该页对应的`location`元素内设置`maxRequestLength`属性。
#### 2. 如何确保上传的文件名唯一?
为了防止文件名冲突,可以在保存文件时生成一个唯一的文件名,使用当前时间戳和原文件名的组合:
“`asp
Dim fileName As String = PathExtractFileName(file.FileName)
Dim uniqueFileName As String = Now().ToString(“yyyyMMddhhmmssfff”) & “_” & fileName
“`
这样每个上传的文件都会有一个独特的名字,避免覆盖。
小伙伴们,上文介绍了“ASP实现文件上传的方法”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/58533.html<