在线电影网站上线半个多月了,磨磨蹭蹭的也解决了一些问题。
很多时候系统在本地是没有问题的,生产环境下却问题百出,比如后台的系统信息采集引擎出问题,
相同的影视资源有采集却不更新,俗话说网站内容是王啊,这个问题必须排第一位。
有的时候考虑网站除了广告收入是否还有其他模式的收入呢?
百思不得其解,理论上一切都在变,相同的模式不一定总是长青树。
曾经的报纸现在却没落了,FACEBOOK异军突起,所以要保持百思的势头,
哪天想到了新的互联网模式,能跟QQ并驾齐驱了(YY下)
在没想到新模式之前吃饭还是要靠广告了,今天在网站后台上传了广告图片,却意外发现上传功能不能用
马上在本地测试,没问题,并调出了系统日志
java.io.FileNotFoundException: v0/hangzhouvedio/webapps/ROOT/advertis_files/20101229130615.jpg (Permission denied) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at java.io.FileOutputStream.<init>(FileOutputStream.java:131) at com.wang.vedio.util.dwr.AdvertistDwr.imgUpLoad(AdvertistDwr.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:740) at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:744) at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:593) at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:90) at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120) at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.wang.vedio.util.filter.CharacterFilter.doFilter(CharacterFilter.java:21) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:619)
根据错误信息来看是没有操作权限了,网站部署在虚拟空间上,服务器用的是LINUX,对于这种环境下获取路径该怎么办呢?请路过的大虾们留下宝贵的意见
另,本地测试的系统编码没有问题,上传功能可以实现,把上传代码也贴出来吧
public String imgUpLoad(FileTransfer upfile, String filename){ try{ InputStream is = upfile.getInputStream(); byte[] buffer = new byte[is.available()]; if(is.available() == 0){ return "图片为空请重试!"; } if(upfile.getMimeType().indexOf("image") == -1){ return "请上传图片类型文件!"; } String file_name = null; if(filename == null || "".equals(filename)){//是否自定义文件名 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); file_name = sdf.format(new Date()); }else{ file_name = filename; } String url = Thread.currentThread().getContextClassLoader().getResource("").getPath(); String dir = url.substring(1, url.indexOf("WEB-INF")-1).replaceAll("%20", " ");//保存图片的根路径 file_name = file_name + upfile.getFilename().substring(upfile.getFilename().lastIndexOf(".")); file_name = "/imgage/advertis/" + file_name;//需要保存数据库的路径+文件名,用于页面访问 FileOutputStream output = new FileOutputStream(new File(dir + file_name));//这里是第38行,就这里出错 is.read(buffer); output.write(buffer); output.flush(); output.close(); is.close(); return file_name; }catch(Exception e){ e.printStackTrace(); return "上传出错"; } }