ZhiYeJianKang_PeiXun/Song.Site/Utility/ExamFileUp.ashx.cs
2025-02-20 15:41:53 +08:00

95 lines
3.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}
}