下面是关于“asp.net利用ashx文件实现文件的上传功能”的完整攻略:
1. 环境准备
在开始之前,我们需要准备好开发环境。本文假定读者已经熟悉C#和ASP.NET技术,同时使用的是Visual Studio 2019社区版。
2. 创建ashx文件
在项目中新建一个.ashx文件,可以命名为“FileUploadHandler.ashx”(当然,也可以根据自己的喜好命名)。然后在文件中编写以下代码:
public class FileUploadHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Expires = -1;
try
{
HttpPostedFile file = context.Request.Files["Filedata"];
string uploadPath = context.Server.MapPath("~/Uploads/");
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
file.SaveAs(uploadPath + Path.GetFileName(file.FileName));
context.Response.Write("Success");
}
catch (Exception ex)
{
context.Response.Write("Error: " + ex.Message);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
该代码在ProcessRequest()
方法中,首先获取上传的文件,然后判断上传文件的存储路径是否存在,并创建该目录。最后将上传的文件保存到指定路径中。
3. 编写前端页面
在前端页面中,我们需要提供一个文件上传的表单,并将文件上传到刚刚创建的.ashx文件中。以下是一个简单的示例(使用jQuery):
<html>
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function () {
var uploader = $("#uploader");
uploader.on("change", function () {
var formData = new FormData();
formData.append("Filedata", uploader[0].files[0]);
$.ajax({
url: "FileUploadHandler.ashx",
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (response) {
alert(response);
},
error: function (xhr, status, error) {
alert("上传失败: " + status + "-" + error);
}
});
});
});
</script>
</head>
<body>
<input type="file" id="uploader" />
</body>
</html>
在这个示例中,我们创建了一个input元素作为文件上传框,并且为该元素绑定change事件,通过jQuery的ajax函数提交表单。
4. 运行测试
现在我们可以测试下文件上传功能。运行该页面,选择一个文件然后点击上传按钮。如果文件上传成功,你应该会收到一个名为“Success”的提示。在web应用程序上传的文件会被保存到你的uploads文件夹中。
5. 另一种示例
如果你不想使用jQuery,你也可以使用原生的JavaScript来实现相同的功能。以下是一个简单的示例:
<html>
<head>
<script>
function uploadFile() {
var uploader = document.getElementById("uploader");
var file = uploader.files[0];
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
else if (xhr.readyState == 4 && xhr.status != 200) {
alert("上传失败: " + xhr.statusText);
}
};
xhr.open("POST", "FileUploadHandler.ashx");
var formData = new FormData();
formData.append("Filedata", file);
xhr.send(formData);
}
</script>
</head>
<body>
<input type="file" id="uploader" />
<button onclick="uploadFile()">上传</button>
</body>
</html>
该示例与前面的示例非常相似,只是使用原生的JavaScript来代替jQuery。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net利用ashx文件实现文件的上传功能 - Python技术站