ZhiYeJianKang_PeiXun/Song.Site/Utility/ExamFileUp.ashx.cs

95 lines
3.7 KiB
C#
Raw Normal View History

2025-02-20 15:41:53 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using WeiSha.Common;
using Song.ServiceInterfaces;
namespace Song.Site.Utility
{
/// <summary>
/// 考试时,简答题附件上传
/// </summary>
public class ExamFileUp : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//学员id考试id
int stid = WeiSha.Common.Request.QueryString["stid"].Int32 ?? 0;
int examid = WeiSha.Common.Request.QueryString["examid"].Int32 ?? 0;
int qid = WeiSha.Common.Request.QueryString["qid"].Int32 ?? 0;
HttpFileCollection files = context.Request.Files;//这里只能用<input type="file" />才能有效果,因为服务器控件是HttpInputFile类型
string msg = string.Empty;
string error = string.Empty;
string filename;
if (files.Count > 0 && stid > 0)
{
filename = System.IO.Path.GetFileName(files[0].FileName);
//判断是否是允许的文件类型
bool isAllow = false; //是否允许
string ext = string.Empty; //上传的扩展名
string[] fileallow = WeiSha.Common.App.Get["ExamFileUp"].Split(',');
if (files[0].FileName.IndexOf('.') > -1)
ext = files[0].FileName.Substring(files[0].FileName.LastIndexOf('.') + 1).ToLower();
foreach (string s in fileallow)
{
if (string.IsNullOrWhiteSpace(s) || s.Trim() == "") continue;
if (s.ToLower() == ext)
{
isAllow = true;
break;
}
}
if (!isAllow)
{
context.Response.Write(json("上传文件仅限" + string.Join("、", fileallow) + "格式", "上传失败", filename, qid));
context.Response.End();
return;
}
//文件所在路径
string filepath = Upload.Get["Exam"].Physics + examid + "\\" + stid + "\\";
if (!System.IO.Directory.Exists(filepath))
System.IO.Directory.CreateDirectory(filepath);
//文件名
string file = qid + "_" + System.IO.Path.GetFileName(files[0].FileName);
//上传文件
foreach (FileInfo f in new DirectoryInfo(filepath).GetFiles())
{
if (f.Name.IndexOf("_") > 0)
{
string idtm = f.Name.Substring(0, f.Name.IndexOf("_"));
if (idtm == qid.ToString()) f.Delete();
}
}
files[0].SaveAs(filepath + file);
msg = " 成功! 文件大小为:" + files[0].ContentLength;
context.Response.Write(json(error,msg,filename,qid));
context.Response.End();
}
}
/// <summary>
/// 返回Json字符串
/// </summary>
/// <param name="error"></param>
/// <param name="msg"></param>
/// <param name="file"></param>
/// <param name="qid"></param>
/// <returns></returns>
private string json(string error, string msg, string file, int qid)
{
string res = "{ error:'" + error + "', msg:'" + msg + "',filename:'" + file + "',qid:'" + qid + "'}";
return res;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}