我正在尝试使用 swfUpload jquery/flash 插件进行上传,我正在遵循 Steven Sanderson 的方法(http://blog.stevensanderson.com/2008/11/24/jquery-ajax-uploader-plugin-带有进度条/)。但我无法让它工作。它在我从他的网站下载的示例应用程序中运行良好。只是为了让它工作,我试图直接在我的应用程序中复制他的页面和所有内容,但它仍然不起作用。
这是页面:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>File upload</title>
<link rel="Stylesheet" href="../../Content/Site.css" />
<%-- <script src="../../Scripts/jquery-1.2.6.min.js"></script>--%>
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Scripts/swfupload.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-asyncUpload-0.1.js"></script>
</head>
<body>
<div id="MainContents">
<form enctype="multipart/form-data" method="post">
<h1>Your profile</h1>
<p>(In a real app, other form controls would appear here)</p>
<p>
Upload your photo: <input type="file" id="photo" name="photo" />
</p>
<input type="submit" value="Save my profile" />
</form>
</div>
<script type="text/javascript">
$(function () {
$("#photo").makeAsyncUploader({
upload_url: "/Customers/AsyncUpload/",
flash_url: '../../Scripts/swfupload.swf',
button_image_url: '/Content/blankButton.png',
disableDuringUpload: 'INPUT[type="submit"]'
});
});
</script>
<div id="result"></div>
</body>
</html>
这是操作方法:
public Guid AsyncUpload()
{
return _fileStore.SaveUploadedFile(Request.Files[0]);
}
这是在 CustomersController 控制器中,我在控制器的开头有这个:
private IFileStore _fileStore = new DiskFileStore();
就像他在他的样本中所做的那样。当然,我也有 IFileStore 接口和 DiskFileStore 类。
我在 head 标签中有对 js 文件和 css 的所有引用:
<head>
<title>File upload</title>
<link rel="Stylesheet" href="../../Content/Site.css" />
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Scripts/swfupload.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-asyncUpload-0.1.js"></script>
</head>
(虽然我使用了最新的 jQuery,而不是他的示例中的 1.2.6)。我至少知道脚本被触发了,因为在 FireBug 中我可以看到输入被动态更改为 flash 对象,这是应该的。
问题是, AsyncUpload() 甚至从未被调用过。我在那里设置了一个永远无法到达的断点。而且我遇到了不同的错误。第一次尝试时,脚本的警告框中出现 302 错误。(当时我在同一页面上有其他 jQuery 脚本,所以我只使用这些脚本从一个更干净的页面重新开始)。但是现在我没有收到任何错误,我可以选择图像和全部,但它只是停在文本显示“上传...”的阶段,但我看不到进度条或任何东西,它永远不会结束。
任何想法我做错了什么?