Не возвращайте файл в редактор в httpHandler на веб-формах Asp.net
Я использую httpHander, чтобы загрузить файл и вернуть его в редактор.
Это Сохранить файл, но не возвращает изображение в редактор. мой код для этого:
public void ProcessRequest(HttpContext context)
{
HttpPostedFile file = context.Request.Files["file"];
string path=HttpContext.Current.Server.MapPath("~")+"/Images/"+file.FileName;
file.SaveAs(path);
context.Response.ContentType = "image/jpeg";
context.Response.Write("<img src='"+path+"'/>");
}
и мой конфиг редактора:
<script type="text/javascript">
$(document).ready(function () {
$(".editor").redactor({
imageUpload: "Upload.ashx/ProcessRequest()",
fileUpload: "Upload.ashx/ProcessRequest()",
linkFileUpload: "Upload.ashx/ProcessRequest()"
,autoformat: false
, convertDivs: false
});
});
</script>
а также:
<asp:TextBox runat="server" ID="txtContnt" TextMode="MultiLine" CssClass="editor"></asp:TextBox>
Мой редактор: редактор, и я использую веб-формы asp.net. httphandler работает очень хорошо, но не возвращает файл в редактор
1 ответ
Ваш путь неверен. Server.MapPath
возвращает абсолютный путь (файловая система), а не путь, который может использовать веб-браузер. Также, согласно этому документу, ожидаемый ответ - строка JSON, а не тег img.
public void ProcessRequest(HttpContext context)
{
HttpPostedFile file = context.Request.Files["file"];
string virtualPath = "/Images/" + file.FileName;
string path=HttpContext.Current.Server.MapPath("~") + virtualPath;
file.SaveAs(path);
context.Response.ContentType = "image/jpeg";
context.Response.Write(@"{ 'filelink': '" + virtualPath + "' }");
}