我有一个WebForms应用程序,我正在尝试使用uploadify jquery库。
它在IE8中工作正常,但不在FF7,FF10或FF3中。放入Upload.ashx的断点没有被击中。
我做了很多搜索,发现它与cookie有关,就像ASPXAUTH一样。我尝试将其添加到'scriptData',但没有成功。
有什么想法吗?
网页代码:
<script type="text/javascript">
$(document).ready(function () {
alert($(".hidcook").val());
// <![CDATA[
var id = "55";
var theString = "asdf";
$('#fileInput').uploadify({
'uploader': 'uploadify/uploadify.swf',
'script': 'Upload.ashx',
'scriptData': { 'id': id, 'foo': theString },
'cancelImg': 'uploadify/cancel.png',
'auto': true,
'multi': true,
'fileDesc': 'All Files',
'queueSizeLimit': 90,
'buttonText': 'Importar Planilha',
'folder': '/uploads',
'onAllComplete': function (event, queueID, fileObj, response, data) {
}
});
});
// ]]></script>
Upload.ashx:
public class Upload : IHttpHandler, IRequiresSessionState{
public void ProcessRequest(HttpContext context)
{
try
{
HttpPostedFile file = context.Request.Files["Filedata"]; //breakpoint
int id = (Int32.Parse(context.Request["id"]));
string foo = context.Request["foo"];
file.SaveAs("C:\\" + id.ToString() + foo + file.FileName);
context.Response.Write("1");
}
catch (Exception ex)
{
context.Response.Write("0");
}
}
答案 0 :(得分:1)
如果您的网站内容不公开,请添加到处理程序的web.config
授权访问权限。
<location path="Upload.ashx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
浏览器通过Flash组件实现文件上传的方式存在一些差异 IE使用相同的会话。 FF打开一个新连接,因此服务器会看到一个试图访问受保护页面的未经验证的用户。
答案 1 :(得分:0)
我在使用MVC时出现问题,其中uploadify没有发布到控制器操作。
这是由于身份验证问题。 Flash由于某种原因为浏览器创建了自己独立的cookie,因此如果用户已经使用浏览器(ASPXAUTH)cookie进行了身份验证,那么swf文件会使用它自己的flash cookie(尚未经过身份验证)发出单独的请求。
运行fiddler查看发生了什么,您可能会发现uploadify正在进行的服务器请求被重定向到login.aspx页面。
虽然我不知道为什么这会在IE中起作用?