缩略图显示问题

时间:2012-03-28 01:24:51

标签: javascript jquery ajax asp.net-mvc-3

我有 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。

所以它应该是,但事实并非如此。

有任何线索吗?谢谢!

1 个答案:

答案 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变量,然后在此处重复使用。