不使用ASP.NET中的服务器控件将如何上传文件?

时间:2023-03-09 02:47:50
不使用ASP.NET中的服务器控件将如何上传文件?

遇到文件的上传时,可能会有大部分的开发者喜欢使用服务器控件,虽然很方便,但是却不能很好的控制,不具灵活性。

现给出例子,使用html标签语言灵活的控制文件的上传。

1、html部分

<input type="file" id="uploadFile" name="uploadFile" style="display: none;"/>
<a href="#" id="uploads">上传文件</a>
<input type="hidden" id="txtFile" name="txtFile" value=""/>
<div class="img"></div>

2、JS部分

<script type="text/javascript">
$(document).ready(function () {
//单击div触发文件的上传事件
  $(".img").click(function() {
$("#uploadFile").click();
});
$("#uploads").click(function () {
ajaxFileUpload();
});
});
function ajaxFileUpload() {
$.ajaxFileUpload
(
{
url: '/plus/upload.aspx', //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'uploadFile', //文件上传域的ID
dataType: 'json', //返回值类型 一般设置为json
success: function(data, status) //服务器成功响应处理函数
{
$("#img1").attr("src", data.imgurl);
$("#txtFile").val(data.imgurl);
if (typeof (data.error) != 'undefined') {
if (data.error != '') {
alert(data.error);
} else {
alert(data.msg);
}
}
},
error: function(data, status, e) //服务器响应失败处理函数
{
alert(e);
}
}
);
return false;
}
</script>

3、uoload.aspx.cs代码部分

protected void Page_Load(object sender, EventArgs e)
{
HttpFileCollection files = Request.Files;
string msg = string.Empty;
string error = string.Empty;
string imgurl = string.Empty; if (files.Count > 0)
{
string fileUrl = Server.MapPath("/") + "uploadfiles\\scholar\\temp\\"; //获取web服务器所在的物理路径
//若文件夹不存在就创建
if (!Directory.Exists(fileUrl))
{
Directory.CreateDirectory(fileUrl);
}
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + files[0].FileName.Substring(files[0].FileName.IndexOf('.'));//修改文件名称
files[0].SaveAs(fileUrl + fileName); //将上传的文件保存到指定服务器的文件夹中
msg = "上传成功! 文件大小为:" + ((float)files[0].ContentLength/(1024*1024)).ToString("0.00") + "MB";
imgurl = "/uploadfiles/scholar/temp/" + fileName;
string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";
Response.Write(res);
Response.End(); }
}