当前位置:编程学习 > C#/ASP.NET >>

100分求上传图片后用JS返回值的问题

图片上传页面只有一个图片上传.然后在其他页面(比如A.ASPX)用框架引用这个文件..上传以后.将上传的图片名称返回到A.ASPX中的一个div中

上传文件:text.aspx


<form id="form1" runat="server">
         <asp:FileUpload ID="image" runat="server" />
         <input type="button" value="插入图片" class="upload" onClick="postfile()"/>
     </form>


后台:text.aspx.cs


protected void Page_Load(object sender, EventArgs e)
    {
        string filename = "";
        string name = image.FileName;
        if (name != null && name != String.Empty)
        {
            string contentType = image.PostedFile.ContentType;
            if (contentType.StartsWith("image/"))
            {
                int size = image.PostedFile.ContentLength;
                if (size > 500000)
                {
                    Member.get_error("图片大小请保持在500k以内!", "1");
                }
                string type = name.Substring(name.LastIndexOf(".") + 1);
                string protimename = System.DateTime.Now.ToString("yyyyMMddHHmmssms");
                filename = protimename + "." + type;
                //定义用户名为文件夹名称
                string dFileName = WebUser.Get_personname();
                string sFileDir = Server.MapPath("/up/" + dFileName);
                if (!System.IO.Directory.Exists(sFileDir))
                {
                    System.IO.Directory.CreateDirectory(sFileDir);
                }

                string filePath = Server.MapPath("/up/" + dFileName + "/") + filename;
                image.SaveAs(filePath);
                Response.Write("<script>window.opener.document.xyz.innerHTML=" + filePath + "</script>");
            }
            else
            {
                WebUser.get_error("产品图片格式不正确!", "1");
            }
        }
    }




A.ASPX
<iframe id="img" name="img" frameborder="0" width="578px" height="80px" scrolling="no" src="text.aspx"></iframe>
<DIV ID="AAAA"></DIV>

因为图片可能要上传多个.我想每上传一个产品就在DIV中显示出来上传的图片名称..



分不够可再加.谢谢帮忙! --------------------编程问答-------------------- A.ASPX
这么写

function getImg(){
 var gImg=document.frames("img").document.all("image").value;
 var info=document.getElementById("AAAA");
 if(gImg==""){
 info.innerText="没有上传图片";
 }else{
 info.innerText=gImg; //这里需要截取字符串,这个你自己能解决吧?
 }
}
--------------------编程问答-------------------- 那text.aspx.cs里面返回该怎么处理? --------------------编程问答-------------------- 在上传button的click下:
主页面:
===================================================
    protected void Button3_Click(object sender, EventArgs e)
    {
        //..............
        string file = "xxxxx";
        Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "test('"+file+"')", true);
    }

js:
<script  type="text/javascript">
        function test(file) 
{
            document.getElementById('iframe1').src = "Default2.aspx?fileName='"+file+"'";
}
</script>

主页面中的iframe的id为iframe1,调用的网页名为Default2.aspx:
如:
<iframe id="iframe1" src="Default2.aspx" ></iframe>

Default2.aspx中有一div,id为div1
如:<div id="div1"></div>
则在Default2.aspx的Page_Load中
if(Request.QueryString["fileName"]!=null)
{
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "document.getElementById('div1').innerHTML ="+Request.QueryString["fileName"].ToString(), true);
} --------------------编程问答-------------------- 没必要写了,用js就能实现了,只不过要在A.ASPX通过某个按钮,来触发getImg()方法,这样能实现你的效果但是有点太笨,我再想想! --------------------编程问答-------------------- <%=变量名%>调用后台变量,直接把路径给前台 --------------------编程问答--------------------
我的方法如下:

1、在你图片上传完成的代码后面,加上代码如下:

 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "parent.window.Test(" + filename + ")", true);


替换你代码中的
 Response.Write("<script>window.opener.document.xyz.innerHTML=" + filePath + "</script>");

2、在a.asp页面中加上js代码如下

 <script type="text/javascript">

        function Test(filename) {
            var content = document.getElementById("AAAA").innerHTML;
            content = content + " 自己处理 " + filename;
            document.getElementById("AAAA").innerHTM = content;
        }
    </script>



--------------------编程问答--------------------
引用 3 楼 koukoujiayi 的回复:
在上传button的click下:
主页面:
 document.getElementById('iframe1').src = "Default2.aspx?fileName='"+file+"'";

  

这里iframe1取不到吧?  --------------------编程问答-------------------- iframe.rar
这是获取iframe里面值的demo 已经实现了跟你差不多功能,你可以借鉴下! 
--------------------编程问答-------------------- --------------------编程问答--------------------
引用 6 楼 zhh107 的回复:
我的方法如下:

1、在你图片上传完成的代码后面,加上代码如下:

C# code

 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "parent.window.Test(" + filename + ")", true);



替换你代码中的
 Response.Write("<scrip……


这个取不到值呢? --------------------编程问答--------------------
那里取不到值?取不到什么值?

我是测试过发上来的  --------------------编程问答-------------------- 使用Jquery的post --------------------编程问答--------------------

<DIV ID="AAAA"></DIV>

Response.Write("<script>parent.document.getElementById("AAAA").innerHTML+='" + filePath + "'</script>");
--------------------编程问答--------------------
引用 11 楼 zhh107 的回复:
那里取不到值?取不到什么值?

我是测试过发上来的


点上传.上传完以后.图片都在..但在那个DIV中.没有任何内容呀 --------------------编程问答-------------------- 这种情况下,我一般都是用5楼的方法解决。<%=图片名%> 你可以 在text。aspx。cs 中上传成功是添加一段代码 strName=图片名称  然后在text.aspx 页面上加一个div   div中绑定 strName ,这样你在AA.aspx中引用text.aspx的时候就相当于添加了图片名称了。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,