2

我在AngularJS應用程序中使用這個插件將文件上傳到REST API。 'fileuploaddone'事件發生後幾秒鐘,我收到來自Internet Explorer的黃色通知:您是否想要保存\打開附件的屏幕截圖:帶IE9的Blueimp文件上傳器

enter image description here

回答

3

基於iframe上傳需要一個內容類型text/plain或text/HTML的JSON響應 - 如果iframe的響應設置爲應用程序/ JSON他們會表現出不希望下載對話框。

來源:https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation

您需要設置正確的內容類型如上面的鏈接解釋。

+0

是的,我已經得到了它自己,但因爲它是正確的答案也許還有其他的可以使用您的文章。 乾杯! –

-1

Blueimp jQuery的文件上傳設置以支持現代瀏覽器以及IE9

注(在IE9和Chrome 39測試):我使用JAVA,春季3在服務器端

index.html文件

<!doctype html> 
<!--[if lt IE 9]>  <html class="lt-ie9"> <![endif]--> 
<!--[if IE 9]>   <html class="ie9"> <![endif]--> 
<!--[if gt IE 9]><!--> <html>   <!--<![endif]--> 

    <head>....</head> 
    <body>....</body> 
</html> 

test.js文件

var options = { 
    url: 'api/test/fileupload', 
    maxFileSize: 10000000, 
    formData: { 
     id: 1 
    } 
}; 

if ($('html').hasClass('ie9') || $('html').hasClass('lt-ie9')) { 
    options.forceIframeTransport = true; 
} else { 
    options.dataType = 'json'; 
} 

$('#fileUploadInput').fileupload(options); 

test.java文件

@POST 
@Path("/api/test/fileupload") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces({ "text/plain" }) 
public Response uploadFile(
     @Context HttpServletResponse response, 
     @Context HttpServletRequest request, 
     @FormDataParam("id") Long id, 
     @FormDataParam("files[]") FormDataContentDisposition fileDetail, 
     @FormDataParam("files[]") InputStream uploadedInputStream) { 
    String header = request.getHeader("accept"); 
    String returnContentType = MediaType.APPLICATION_XML; 
    VEWTestAttachment attObj = testMgr.saveAttachment(id,fileDetail,uploadedInputStream); 
    if(header.indexOf(MediaType.APPLICATION_JSON) >= 0){ 
     returnContentType = MediaType.APPLICATION_JSON; 
    } 
    response.setContentType(returnContentType); 
    return Response 
      .ok(attObj,returnContentType) 
      .build(); 
} 
相關問題