我有一个我发布的表单,其中包含2个数字值和一个包含SVG的长字符串(使用Fabricjs生成)。控制器上传SVG并输出包含它的PDF。我之所以使用标准表单而不是Ajax POST,是因为我了解ajax无法返回文件下载。
我有maxJsonLength,aspnet:MaxJsonDeserializerMembers和maxRequestLength都设置为远高于此处所涉及的值(10k文本),我不认为json相关的值在这里发挥作用无论如何,因为它是标准的表格。
当我在Visual Studio中本地运行它时,这非常有效。一旦它发布到服务器,它就会失败。我通过远程调试附加到进程,它甚至没有命中控制器。我有一个类似的控制器动作,也接受相同的SVG字符串,并且它也不起作用。
在网络控制台中,操作返回200.当我查看标题时,我看不到发布到服务器的内容与我在本地看到的内容之间存在任何差异。 Elmah没有捕获任何错误,所以我甚至无法弄清楚到底在哪里找出错误。
这是表格。我在另一篇SO帖子的建议中添加了enctype,但这并没有什么不同。
<form action="/Product/ExportSVG" enctype="application/x-www-form-urlencoded; charset=UTF-8" id="svgForm" method="post">
<input type="hidden" id="svgProjNo" name="svgProjNo" value="1111">
<input type="hidden" id="svgLineID" name="svgLineID" value="">
<input type="hidden" id="svgData" name="svgData" value="">
</form>
发布表单的脚本:
var svgtext = canvas.toSVG(null, reviver);
$("#svgLineID").val($("#LineItem_ParentID").val());
$("#svgData").val(svgtext);
$('#svgForm').trigger('submit');
控制器:
[HttpPost]
public ActionResult ExportSVG(decimal svgProjNo, decimal svgLineID, string svgData)
{
...
}
答案 0 :(得分:1)
您可能需要以base 64格式编码SVG数据。