我有 MVC3 项目& Valums文件上传器。
代码如下
<script type="text/jscript">
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
action: '@Url.Action("UploadFile")',
allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
sizeLimit: 2147483647,
onComplete: function (id, fileName, responseJSON) {
var uploadedFile = "/Images/Orders/thumb-" + responseJSON.uploadedFile;
$("#uploadedImage").attr("src", uploadedFile);
$("#ImageErrorMessage").text("");
alert("Your file has been uploaded.");
}
});
</script>
所以在本地上传完成后我可以看到缩略图这样的jQuery 效果很好。
但是在LIVE网站上根本没有显示缩略图。 (但是无论如何我都看到了警告信息,我创建了缩略图图像。)
缩略图的大小约为30 Kb。
所以它应该是,但事实并非如此。
有任何线索吗?谢谢!
答案 0 :(得分:2)
你有一个硬编码的网址:
var uploadedFile = "/Images/Orders/thumb-" + responseJSON.uploadedFile;
这是你在ASP.NET MVC应用程序中永远不应该做的事情。在处理网址时,您应该始终使用网址助手。原因是当您在IIS中部署应用程序时,必须在您的URL前面放置一个虚拟目录名称。所以正确的地址现在是:
var uploadedFile = "/MyAppName/Images/Orders/thumb-" + responseJSON.uploadedFile;
显然,将两个单独的版本用于开发,一个用于生产是不可接受的。这就是你应该使用网址助手的原因。
所以:
var uploadedFile = '@Url.Content("~/images/orders/thumb-")' + responseJSON.uploadedFile;
或者如果这是在一个单独的javascript文件中,您无法使用服务器端助手,您可以在视图中将基本URL声明为全局javascript变量,然后在此处重复使用。