An alternative to UBB.threads
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

47 lines
1.5 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Web.Core;
using FLocal.Common;
using System.Xml.Linq;
using FLocal.Common.dataobjects;
using Web.Core.DB;
using Web.Core.DB.conditions;
namespace FLocal.IISHandler.handlers.response {
class UploadHandler : RedirectGetHandler<FLocal.Common.URL.upload.Item> {
protected override string templateName {
get {
return null;
}
}
protected override string getRedirectUrl(WebContext context) {
Uri referer = context.httprequest.UrlReferrer;
if(referer == null || referer.Host != context.httprequest.Url.Host) {
//throw new AccessDeniedException();
return new FLocal.Common.URL.upload.Info(this.url.upload.id.ToString(), null).canonical;
}
string mime = Util.getMimeByExtension(this.url.upload.extension);
if(mime != null) {
context.httpresponse.ContentType = mime;
} else {
//throw new HttpException(403, "wrong file type");
throw new WrongUrlException();
}
context.httpresponse.AddHeader("content-disposition", "attachment; filename=" + this.url.upload.filename);
context.httpresponse.Cache.SetExpires(DateTime.Now.AddDays(10));
context.httpresponse.Cache.SetLastModified(this.url.upload.uploadDate);
context.httpresponse.Cache.SetCacheability(System.Web.HttpCacheability.Public);
UploadManager.WriteUpload(this.url.upload, context.httpresponse.OutputStream);
throw new response.SkipXsltTransformException();
}
}
}