アップロードに swfUpload jquery/flash プラグインを使用しようとしています。Steven Sanderson によるアプローチに従っています ( http://blog.stevensanderson.com/2008/11/24/jquery-ajax-uploader-plugin- with-progress-bar/ )。しかし、私はそれを機能させることができません。彼のサイトからダウンロードしたサンプル アプリケーションでは問題なく動作します。それを機能させるために、彼のページとすべてをアプリケーションに直接コピーしようとしましたが、それでも機能しません。
ここにページがあります:
<%@ 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>
(ただし、彼がサンプルに持っていた1.2.6ではなく、私が持っている最新のjQueryを使用しました)。FireBug では、入力が動的に Flash オブジェクトに変更されていることがわかるため、少なくともスクリプトがトリガーされることはわかっています。
問題は、AsyncUpload() が呼び出されることさえないということです。そこに到達することのないブレークポイントを設定しました。そして、さまざまなエラーが発生しています。初めて試したとき、スクリプトからアラート ボックスに 302 エラーが表示されました。(当時、私は同じページに他の jQuery スクリプトを持っていたので、これらのスクリプトだけを使用してよりクリーンなページからやり直しました)。しかし、今ではエラーは発生しません。画像とすべてを選択できますが、テキストに「アップロード中...」と表示されている段階で停止しますが、進行状況バーなどは表示されず、終わることはありません。
私が間違っていることはありますか?