我编写了一个应用程序,其中SWF存储在我的本地驱动器上,例如C:/uploads/demo/demo.swf,我已经在我的JSP中嵌入了SWF文件。
但是当我运行我的应用程序时,SWF不会在任何浏览器中打开,但令人惊讶的是,当我在Eclipse的默认浏览器中运行时,SWF文件会打开。
出于安全原因,我知道应用程序无法访问其已部署文件夹之外的文件,但解决此问题的方法是什么。
这是我的代码
<%@ 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 :(得分:0)
将其放入webroot并通过http://...
而不是file:///...
引用它。或者创建一个servlet,从webroot外部的位置读取文件的字节,然后使用正确的mimetype将这些字节写入servlet响应。然后在嵌入代码中引用servlet地址。