我在ASP.NET MVC应用程序中使用uploadify控件来上传用户选择的文件。我已将以下代码放在.js文件中:
$("#file_upload").uploadify({
'uploader': '/Scripts/uploadify/uploadify.swf',
'script': '/File/Upload',
'cancelImg': '/Scripts/uploadify/cancel.png',
'fileExt': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip',
'fileDesc': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip',
'auto': true,
'multi': true,
'sizeLimit': 1048576,
'buttonText': 'Upload Files',
'onComplete': function (event, queueID, fileObj, response, data) {
alert(fileObj.name);
}
});
控制器具有以下代码:
public class FileController : Controller
{
private static string uploadedHTMLFile = string.Empty;
[HttpPost]
public ActionResult Upload(HttpPostedFileBase fileData)
{
//do something
}
}
我遇到两个问题:
{。{1}}在.cshtml文件中定义。
答案 0 :(得分:0)
请尝试以下操作。
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase fileData)
{
if (fileData != null && fileData.ContentLength > 0)
{
var appData = Server.MapPath("~/app_data");
var filename = Path.Combine(appData, Path.GetFileName(fileData.FileName));
fileData.SaveAs(filename);
}
return Json(true);
}
}
Index.cshtml
查看:
<input type="file" name="fileInput1" id="fileInput1" data-upload-url="@Url.Action("upload")" data-uploadify-root="@Url.Content("~/scripts")" />
Layout.cshtml
脚本引用:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.4.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/myscript.js")"></script>
myscript.js
:
$(function () {
var fileInput = $('#fileInput1');
var uploadifyRoot = fileInput.data('uploadify-root');
var uploadUrl = fileInput.data('upload-url');
fileInput.uploadify({
'uploader': uploadifyRoot + '/uploadify.swf',
'script': uploadUrl,
'cancelImg': uploadifyRoot + '/cancel.png',
'fileExt': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip',
'fileDesc': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip',
'auto': true,
'multi': true,
'sizeLimit': 1048576,
'buttonText': 'Upload Files',
'onComplete': function (event, queueID, fileObj, response, data) {
alert(fileObj.name);
}
});
});
答案 1 :(得分:0)
未调用控制器操作的原因是input type="file"
的名称与控制器操作的参数不匹配。
在您的控制器中尝试这样:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file_upload)
{
}
您可以将输入类型的名称更改为fileData
,也可以将参数名称更改为您的操作,如上所述。
我不确定我对第二个问题的解决方案是否解决了,但它可能对你有帮助。
尝试在uploadify选项中使用'removeCompleted': false
,这样即使文件上传成功,它也会停留在页面上而不会消失。
希望这有帮助。