如何将对象从uploadify传递到webapi控制器?我不确定如何正确使用ScriptData参数。
我试过了:
$("#fileInput").uploadify({
'uploader': '/api/files/Addfiles/',
'swf' : '/uploadify/uploadify.swf',
'cancelImage' : '/uploadify/uploadify-cancel.png',
'auto': true,
'folder': "/uploads",
'scriptData' : {'product': null }
});
这是我的控制器:
public Task<HttpResponseMessage> AddFiles(Product product )
{
}
如果我从控制器中删除了Product参数,控制器就会被调用(点击&#34;选择文件&#34;)一切正常。但是当我尝试传递参数时,它不会被调用。我的路线模板是:
api/{controller}/{action/{id}
答案 0 :(得分:0)
好。经过一些调查后,我发现uploadify 将与标准的MVC控制器操作一起工作,但似乎没有将scriptData作为请求URL的一部分传递(根据Fiddler2)。
作为替代方法,您可以修改formData设置以回发其他信息:
<div class="myuploader">
<input id="file_upload" type="file" name="file_upload" />
<input id="uploadfiles" type="button" value="Upload files" />
</div>
<script type="text/javascript">
$(function () {
$('.myuploader').uploadify({
swf: '/content/uploadify.swf',
uploader: 'home/upload',
auto: true,
formData: {product: 456}
});
public ActionResult Upload()
{
HttpPostedFileBase oFile = Request.Files["Filedata"];
if (oFile != null)
{
string sDirectory = Server.MapPath("~/Files/");
string filename = Path.GetFileName(oFile.FileName);
// You can pick up any parameter set in the formData member of the plugin using its name
string testParam = Request.Form["product"]; // This gets 456
// Do something with the file here
return Content("1");
}
else
{
return Content("0");
}
}
}
我仍然无法使用标准的WebApi控制器使Uploadify正常工作。
顺便说一下:由于我们需要SWF和HTML 5支持,我们将uploadify和商业上传包装在我们自己的插件中,该插件根据浏览器功能的需要动态转换参数。我们还让它自动提取任何隐藏的字段值并将它们组合到formData中。你可能想尝试这样的事情。