html代码:我是发送请求到teacher_center.aspx,不是到.ashx一般处理程序里,需要加 runat="server",有空我再试试发送请求到 .ashx 里
<input type="file" class="upload" id="fu_book_img" name="fu_book_img" runat="server" onchange="SelectBookImg()" />上传图片
<iframe id='frameFile' name='frameFile' style='display: none;'></iframe>
<input type="hidden" id="hidden_select_img" />
<img src="" height="76" width="141" alt="" id="books_img" />
js脚本:
function SelectBookImg(e) {
var fname = '<%=DateTime.Now.ToString("yyyyMMddHHmmss")%>' + getRandom(999);
var oldSelect = $("#hidden_select_img").val();//上一次选择的图片
$("#form1").attr("action", "teacher_center.aspx?op=upload&fname=" + fname + "&oldSelect=" + oldSelect);
$("#form1").attr("target", "frameFile");//隐藏的iframe,为了实现无刷新,参考我的另一篇文章
$("#form1").submit();
$("#form1").removeAttr("target");
}
function SetImg(imgUrl) {
$("#books_img").attr("src", imgUrl);
$("#hidden_select_img").val(imgUrl);
}
.NET代码
HttpPostedFile fu = Request.Files["fu_book_img"];//Name属性
if (!string.IsNullOrEmpty(fu.FileName))
{
string ext = Path.GetExtension(fu.FileName).ToLower();
if (CommonHelper.ImgPattern.Contains(ext))//判断图片格式是否正确
{
//验证文件的大小,fu.ContentLength是文件字节长度
if (fu.ContentLength > (CommonHelper.HeadImgSize / 2))
{
JScript.Show(this, "你上传的文件不能大于1M,请重新上传!");
}
else
{
string path = Server.MapPath("~/UploadFile/BookImg/temp/") + fname + ext;
fu.SaveAs(path);
//删除上一次选择的文件
string oldPath = Server.MapPath("~" + oldSelect);
if (File.Exists(oldPath))
{
File.Delete(oldPath);
}
//将选择的图片加载到页面中的 img中,需要用 window.parent,因为我们指定的是 iframe 代提交
Response.Write("<script>window.parent.SetImg('/UploadFile/BookImg/temp/" + fname + ext + "');</script>");
Response.End();
}
}
else
{
JScript.Show(this, "图片格式不正确");
}
}
else
{
JScript.Show(this, "请选择图片");
}