ASP.NET页面方法-文件上载
我正在尝试创建ajaxy文件上载 以下是asp代码:ASP.NET页面方法-文件上载,asp.net,asp.net-ajax,Asp.net,Asp.net Ajax,我正在尝试创建ajaxy文件上载 以下是asp代码: <input type="file" id="supportingDocs" runat="server"/> <input type="button" id="uploadBtn" onclick="upload();" value="Upload"/> 以下是相关的C#代码: 我试图从请求中获取HttpFilesCollection,它是空的。我知道PageMethods不遵循正常的asp.net生命周期。但是,
<input type="file" id="supportingDocs" runat="server"/>
<input type="button" id="uploadBtn" onclick="upload();" value="Upload"/>
以下是相关的C#代码:
我试图从请求中获取HttpFilesCollection,它是空的。我知道PageMethods不遵循正常的asp.net生命周期。但是,在调试过程中,在单步执行代码时查看HttpRequest对象,我发现请求中的所有内容都在那里,但“Files”属性为空。我可能在这里漏掉了一些东西,这种上传文件的方法甚至是不可能的。 你可以只使用Ajax控件工具包提供的一个,即你可以考虑jQuery插件: 文件上载控件通过将post请求与文件内容一起发送回服务器来工作。这就是文件上传的构建方式。这样说来,我不知道所有这些文件上传插件的内部工作是如何运作的,但即使是在ASP.NET Ajax服务之外,也可以考虑其他一些服务。p> 如果您想使用服务,可以尝试Sys.Net.webservicecoproxy.invoke方法,该方法使您能够控制post,序列化要发布到服务器的表单数据。同样,从理论上讲,我不能100%确定这一切是如何通过AJAX实现的
HTH.如果您想上传一个文件而不进行完整回发,请尝试。它有一个非常好的文件浏览器选项和其他功能,不像ASP.NET AJAX AsyncFileUpload看起来非常有限 SWFUpload演示: 一个流行的jquery选项是uploadify,请参阅 如果没有flash,我永远无法实现异步文件上传 更新
声称AsyncFileUpload不使用flash,因此这可能比uploadify和SWFUpload有优势。好,所以我最终使用了asp async upload和page方法 AsyncFileUpload在实际将文件保存到服务器上时效果很好,但我仍然需要运行一些服务器端代码来写出数据库,并列出上载到服务器的当前文件。不幸的是,您在客户端更改的任何内容都不会被呈现,因为上传后没有回发。所以我只是将OnClientUploadComplete设置为使用page方法的JS函数 ASP代码:
<asp:AsyncFileUpload ID="asyncFileUpload" runat="server" OnUploadedComplete="uploadFile" OnClientUploadComplete="showUploadedFiles" ThrobberID="uploading"/>
Javascript:
function upload()
{
PageMethods.uploadFile($get('supportingDocs').value, onSucceed, onFail);
}
function showUploadedFiles()
{
PageMethods.getUploadedFiles(onSucceed, onFail);
}
function deleteDoc(docId)
{
PageMethods.deleteDocument(docId, onSucceed, onFail);
}
function onSucceed(result, userContext, methodName)
{
$get('uploadedFiles').innerHTML = result;
}
function onFail(error, userContext, methodName)
{
$get('uploadedFiles').innerHTML = "<p style='color: red;'>AJAX Error!</p>";
}
函数showUploadedFiles()
{
getUploadedFiles(onSucceed、onFail);
}
函数deleteDoc(docId)
{
PageMethods.deleteDocument(docId、onSucceed、onFail);
}
函数onSucceed(结果、用户上下文、方法名)
{
$get('uploadedFiles')。innerHTML=result;
}
函数onFail(错误、用户上下文、方法名)
{
$get('uploadedFiles').innerHTML=“