C# 文件上传上传两次
这就是我想做的。使用Ajax AsyncFilepload上载图像时,它还会在图像控件中显示图像。因为上传是异步的,虽然图像上传很好,但它不会显示在图像控件中。因此,根据建议,添加了JS函数。它现在工作正常,但只是由于回发,C代码触发了两次,因此每个图像都上载了两次 另外,为什么ViewState第二次变为null。此页使用母版 JS:C# 文件上传上传两次,c#,asp.net,C#,Asp.net,这就是我想做的。使用Ajax AsyncFilepload上载图像时,它还会在图像控件中显示图像。因为上传是异步的,虽然图像上传很好,但它不会显示在图像控件中。因此,根据建议,添加了JS函数。它现在工作正常,但只是由于回发,C代码触发了两次,因此每个图像都上载了两次 另外,为什么ViewState第二次变为null。此页使用母版 JS: function UpdateImage() { __doPostBack("UpdatePanel2",""); } <asp:AsyncFile
function UpdateImage()
{
__doPostBack("UpdatePanel2","");
}
<asp:AsyncFileUpload ID="fu" runat="server"
OnClientUploadComplete="UpdateImage" OnUploadedComplete="fu_UploadedComplete"/>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Image runat="server" ID="img"/>
</ContentTemplate>
</asp:UpdatePanel>
protected void fu_UploadedComplete(object sender,
AjaxControlToolKit.AsyncFileUploadEventArgs e)
{
if(fu.HasFile && ViewState["vMap"] == null)
{
string sNew = getRandomNumber().ToString() + fu.FileName;
ViewState["vMap"] = sNew;
sNew = "~/Temp/"+sNew;
fu.SaveAs(Server.MapPath(sNew));
img.ImageUrl = sNew;
UpdatePanel.Update();
}
}
ASPX:
function UpdateImage()
{
__doPostBack("UpdatePanel2","");
}
<asp:AsyncFileUpload ID="fu" runat="server"
OnClientUploadComplete="UpdateImage" OnUploadedComplete="fu_UploadedComplete"/>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Image runat="server" ID="img"/>
</ContentTemplate>
</asp:UpdatePanel>
protected void fu_UploadedComplete(object sender,
AjaxControlToolKit.AsyncFileUploadEventArgs e)
{
if(fu.HasFile && ViewState["vMap"] == null)
{
string sNew = getRandomNumber().ToString() + fu.FileName;
ViewState["vMap"] = sNew;
sNew = "~/Temp/"+sNew;
fu.SaveAs(Server.MapPath(sNew));
img.ImageUrl = sNew;
UpdatePanel.Update();
}
}
他第一次
文件上载控件的ID为“fu”,您使用的是“fileUpload.HasFile”,这是错误的。
因此,输出是不正确的。我有一些代码,请尝试一下这个。
*头部标签*
<script type="text/javascript">
// This function will execute after file uploaded successfully
function uploadComplete()
{
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File Uploaded Successfully";
}
// This function will execute if file upload fails
function uploadError() {
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File upload Failed.";
}
</script>
编译器没有两次调用您的函数-您的执行计划=您自己构建的逻辑!在
fu#uUploadedComplete
中的C#code中设置一个断点,一旦进入该断点(在每一站),请查看,以查看是谁在调用该函数。我在这里找不到任何内容。名称为“fu#uUploadedComplete(对象发送方,AjaxControlToolKit.AsyncFileUploadeEventArgs)”。此外,为什么ViewState[“vMap”]在第二次访问事件时变为null。@Ruby请查看以下示例,可能会有所帮助@你能告诉我,这和我的问题有什么关系吗。我找不到停止第二次运行的方法。我尝试了来自的所有3种解决方案。如果这个答案有用,请回复。如果没有,请告诉我将尝试其他代码。对不起,这没有帮助。我不想显示状态消息。我需要做的是找到一种方法停止第二次触发C代码。