[英]Valums file-uploader doesn't work under Internet Explorer 9
Valums的文件上傳器 (現在稱為Fine Uploader )在Internet Explorer 9下無法正常運行,但在Chrome上運行正常。
因此,在IE下顯示的是文件名和按鈕“取消”,沒有上載百分比。
有什么線索嗎?
更新:
我知道這個問題是專門在asp.net下提出的,但是當我搜索“ valuems ajax upload IE9”時出現了這個問題,因此我將在這里發布修復程序,以防它對像我這樣的人產生幫助,而不論他們使用哪種語言:
我從AJAX上傳請求返回一個帶有“ application / json”內容標頭的JSON響應。 IE9不知道該如何處理“ application / json”內容 (但Chrome / FF / etc可以)。
我通過確保在服務器的json響應上返回“ text / html ” MIME類型http標頭來解決此問題。
現在,IE不再嘗試下載響應! 干杯
我無法重現該問題。 這是一個完整的工作示例。
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase qqfile)
{
var uploadPath = Server.MapPath("~/app_data");
if (qqfile != null)
{
var filename = Path.Combine(uploadPath, Path.GetFileName(qqfile.FileName));
qqfile.SaveAs(filename);
return Json(new { success = true }, "text/html");
}
else
{
var filename = Request["qqfile"];
if (!string.IsNullOrEmpty(filename))
{
filename = Path.Combine(uploadPath, Path.GetFileName(filename));
using (var output = System.IO.File.Create(filename))
{
Request.InputStream.CopyTo(output);
}
return Json(new { success = true });
}
}
return Json(new { success = false });
}
}
Index.cshtml
視圖:
<script src="@Url.Content("~/Scripts/valums/fileuploader.js")" type="text/javascript"></script>
<div id="file-uploader">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
</noscript>
</div>
<script type="text/javascript">
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
action: '@Url.Action("upload")'
});
</script>
您還可以在布局中包含CSS:
<link href="@Url.Content("~/Scripts/valums/fileuploader.css")" rel="stylesheet" type="text/css" />
看來這是IE緩存問題,如果您使用的是Ajax和GET,請在get參數中為Ajax參數添加timestamp值,這將達到以下目的:
$.ajax({
url : "http:'//myexampleurl.php' + '?ts=' + new Date().getTime(),
dataType: "json",
contentType: "application/json; charset=utf-8",
.
.
//more stuff
如果您使用的是java spring
@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody YourObject excelUplaod(@RequestHeader("X-File-Name") String filename, InputStream is) {
// chrome or firefox
}
@RequestMapping(value = "/upload", method = RequestMethod.POST,headers="content-type=multipart/*", produces = "text/html")
public @ResponseBody ResponseEntity<YourObject> uploadByMultipart(@RequestParam(value = "qqfile") MultipartFile file) {
// IE
try {
String fileName = file.getOriginalFilename();
InputStream is = file.getInputStream();
// more stuff
} catch (Exception e) {
logger.error("error reading excel file", e);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.