我正在尝试使用 swfupload 插件来上传文件。问题是,我希望用户能够切换要上传到的目录。
奇怪的是(这可能是由于我对 jQuery 的了解有限),在使用警报检查它时,我似乎拥有正确的目录,但上传仍然会转到先前选择的目录。
即,如果我打开页面,然后单击上传链接,则会显示一个名为 uploadPanel 的 div,它会加载 swfupload。我可以很好地进行第一次上传。但是,如果我再选择一个不同的目录,它就行不通了。我已经发出警报以测试当前目录的变量是否正确。此警报始终正确显示当前目录。但是当调用服务器代码中的操作方法时,该目录始终是我在第一次上传时选择的第一个目录。
这是jQuery代码:
<script type="text/javascript">
var uploadDir;
$(function () {
$("#uploadPanel").hide();
var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";
loadFileManager();
$("#uploadLink").click(function (event) {
$('#uploadPanel').show();
alert("uploadDir: " + uploadDir); //NOTE!!!: This shows the correct current directory, and yet, in post_params below, a previous directory is still sent to the action method in the Controller. How is this possible when the alert shows the correct directory?
$("#inputFile").makeAsyncUploader({
upload_url: "/Upload/AsyncUpload/",
flash_url: '/Scripts/swfupload.swf',
button_image_url: '/Scripts/blankButton.png',
post_params: { token: auth, currentDirectory: uploadDir },
use_query_string: true,
disableDuringUpload: 'INPUT[type="submit"]'
});
$("#closeButton").click(function () {
$("#uploadPanel").hide();
$("#inputFile_completedMessage").hide();
});
});
});
</script>
注意:uploadDir 在其他地方设置,在一个单独的 js 文件中。但关键是,它的值在警报中总是正确的,那么为什么不在对 action 方法的调用中呢?