Проблема с миниатюрами - PullRequest
0 голосов
/ 28 марта 2012

У меня 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 Кб.

Так и должно быть, но это не так.

Есть подсказка? Спасибо!

1 Ответ

2 голосов
/ 28 марта 2012

У вас есть жестко запрограммированный URL:

var uploadedFile = "/Images/Orders/thumb-" + responseJSON.uploadedFile;

Это то, что вы никогда не должны делать в приложении ASP.NET MVC. Вы всегда должны использовать помощники URL при работе с URL. Причина этого в том, что при развертывании приложения в IIS существует имя виртуального каталога, которое вы должны поместить перед своими URL-адресами. Итак, правильный адрес сейчас:

var uploadedFile = "/MyAppName/Images/Orders/thumb-" + responseJSON.uploadedFile;

Очевидно, что две отдельные версии, одна для разработки, а другая для производства, недопустимы. Вот почему вы должны использовать url helpers.

Итак:

var uploadedFile = '@Url.Content("~/images/orders/thumb-")' + responseJSON.uploadedFile;

или если это отдельный файл javascript, в котором вы не можете использовать помощники на стороне сервера, вы можете объявить базовый URL-адрес как глобальную переменную javascript в своем представлении, а затем повторно использовать его здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...