簡體   English   中英

Valums文件上傳器在Internet Explorer 9下不起作用

[英]Valums file-uploader doesn't work under Internet Explorer 9

Valums的文件上傳器 (現在稱為Fine Uploader )在Internet Explorer 9下無法正常運行,但在Chrome上運行正常。

因此,在IE下顯示的是文件名和按鈕“取消”,沒有上載百分比。

有什么線索嗎?

在此處輸入圖片說明


更新:

MVC Valums Ajax Uploader也是解決方案-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM