一、前端ExtJS代码
Ext.applyIf(me, {
items: [{
id: "fileUploadForm",
xtype: "form",
frame: true,
bodyPadding: 10,
items: [{
xtype: 'filefield',
id: 'fileUpload',
name: 'fileUpload',
fieldLabel: '文件名称',
labelWidth: 60,
msgTarget: 'side',
fileUpload: true,
allowBlank: false,
anchor: '100%',
buttonText: '请选择上传文件位置'
}],
buttons: [{
text: '上传文件',
buttonAlign: 'center',
handler: function () {
var that = this;
var form = this.up('form').getForm();
//验证表单
if (form.isValid()) {
form.submit({
url: "Handler/fileUpload.ashx",
waitMsg: '文件正在上传,请耐心等待....',
method: "POST",
success: function (fp, o) {
Ext.Msg.alert('文件上传成功', o.result.message);
},
failure: function (fp, o) {
Ext.Msg.alert("错误提示", "文件上传失败!");
}
});
}
}
}]
}]
});
二、C#代码(即fileUpload.ashx文件)
using System;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.Script.Serialization;
namespace FileUpload.Web.Handler
{
public class FileUpload: IHttpHandler, IRequiresSessionState
{
String URL = System.Configuration.ConfigurationManager.AppSettings["uploadURL"];
public void ProcessRequest(HttpContext context)
{
string res = string.Empty;
res=FileUpload(context);
context.Response.Write(res);
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="context">上下文</param>
/// <returns></returns>
public String FileUpload(HttpContext context)
{
Result result = new Result();
try
{
string guid = Guid.NewGuid().ToString("N");
int c = context.Request.Files.Count;
if (context.Request.Files.Count == 0)
{
return "";
}
string localPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Upload/");
HttpPostedFile file = context.Request.Files[0];
string name = Path.GetFileNameWithoutExtension(file.FileName);
string ex = Path.GetExtension(file.FileName);//文件的后缀
string filePathName = name + guid + ex;
if (!System.IO.Directory.Exists(localPath))
{
System.IO.Directory.CreateDirectory(localPath);
}
string saveurl = Path.Combine(localPath, filePathName);
file.SaveAs(saveurl);
//文件的url地址
saveurl = "http://" + context.Request.UrlReferrer.Host + "//Upload//" + "/" + filePathName;
string elativepath = URL + "Upload/" + "/" + filePathName;
result.flag = 0;
result.success = true;
result.message = "文件上传成功";
result.url = elativepath;
result.name = name + ex;
JavaScriptSerializer res = new JavaScriptSerializer();
return res.Serialize(result);
}
catch (Exception e)
{
return "e";
}
}
public class Result
{
public int flag; //标识符
public String url;//存储路径
public String name;//文件名
public bool success;
public String message;
}
}
}
三、配置Web.config文件
<appSettings>
<add key="uploadURL" value="http://111.111.0.111:8080/Web/" />
//http://111.111.0.111:8080/Web/ 为项目IIS部署地址
</appSettings>