2014-10-07 7 views
-1

Я написал приложение, в котором SWF хранится на моем локальном диске для примера C: /uploads/demo/demo.swf, и я встроил SWF-файл в свой JSP ,Cant open SWF-файл, встроенный в JSP в любом браузере

Но когда я запускаю свое приложение, SWF не открывается в любом браузере, но удивительно, что SWF-файл открывается при запуске в браузере Eclipse по умолчанию.

По соображениям безопасности я знаю, что приложение не может получить доступ к файлам за пределами его развернутых папок, но для чего это работает.

Вот мой код

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1" import="java.io.*"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 

<%final String UPLOAD_DIRECTORY = "C:/uploads/"; 

String uname=(String)session.getAttribute("user"); 
    // out.print(uname); 
     String uname1=""; 
    boolean flag = false; 
    String path =UPLOAD_DIRECTORY+uname ; 
// out.print("      "+path); 

    File f = new File(path); 
    if(f.exists()) 
    { 
     File[] listOfFiles = f.listFiles(); 

    for (File file : listOfFiles) { 
     String filename =file.getName(); 
     String ext = filename.substring(filename.indexOf(".")); 
    if (ext.contains(".swf")) { 
     flag=true; 
    System.out.println(file.getName()); 
    uname1=file.getPath().replace("\\", "/"); 
    uname1 = "file:///"+uname1; 
    System.out.println(uname1); 
     } 
     } 
    } 
    else 
    { 
    out.println("Please Sign In after few days................."); 

    } 

    if(flag==true) 
    { 

    %> 
    <%} 
    else 
    { 
     out.println("No file to show"); 
    } 


    %> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

    <script type="text/javascript" src="swfobject.js"></script> 


    <script type="text/javascript"> 
    swfobject.embedSWF("<%=uname1%>", "myContent", "800", "800", "9.0.0"); 
    </script> 
    <title>Insert title here</title> 
    </head> 
    <body> 






<h1><a href="LogoutServlet">Logout</a> 
</h1> 

<div id="myContent"> 
    <p>Alternative content</p> 
</div> 

</body> 


</html> 

я был бы очень признателен, если кто-то может помочь.

ответ

0

Вставьте это в вебсайт и обратитесь к нему по номеру http://... не file:///.... Или создайте сервлет для чтения байтов файла из местоположения вне webroot, где у вас есть, и напишите эти байты в ответ сервлета с соответствующим типом mimetype. Затем укажите адрес сервлета в своем коде для встраивания.

+0

Спасибо за ур ответ, он решил мою проблему, я не могу положить его в webroot, так как мои SWF-файлы генерируются динамически во время выполнения, поэтому второе решение, т.е. создание сервлета для чтения байтов, а затем запись этих байтов в ответ сработало для меня. :) – Rahuul