0

私のサーバー側は、Appache Tomcat 7 (Eclipse のプラグイン) でホストされている JSP アプリケーションです。私のクライアント側は: -

if(("GET").equalsIgnoreCase(request.getMethod())&&("Create Reimbursement").equalsIgnoreCase(request.getParameter("Create Reimbursement"))){ 
//crresult = lmktweb.createReimbursement(Integer.parseInt(request.getParameter("ID")), request.getParameter("EmpdID"), request.getParameter("DateCreated"), request.getParameter("Amount"),request.getParameter("Vendor"),request.getParameter("picpath"));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.80.125:8080/UploadFileServerSide/UploadHandler.jsp");
MultipartEntity entity = new MultipartEntity();
System.out.println(request.getParameter("fname"));
if(request.getParameter("fname")!=""){
    File file = new File(request.getParameter("fname"));
    entity.addPart("data", new FileBody(file));
    httppost.setEntity(entity);    
    HttpResponse resp = httpclient.execute(httppost);
}

私のサーバー側は: -

try {
                        String itemName = item.getName();
                        String fpath = "";
                        //item.
                        File root=File.listRoots()[0];
                        String extPath;
                        if(crdate!=""){
                            extPath = rei.HandlePathWithDate(crdate,getServletContext().getRealPath("images"));
                            fpath = extPath+"\\"+ppath;
                            fpath = extPath.replaceAll("/", "\\");
                        }   
                        else{

                            extPath= getServletContext().getRealPath("/");
                            fpath = extPath.concat("\\"+itemName);                              
                            fpath = extPath.replaceAll("/", "\\");                          

                        }
                        System.out.println("Saving as: " +fpath);
                        File f = new File(fpath);

                        f.setWritable(true);
                        f.setReadable(true);
                        item.write(f);

                    } catch (Exception e) {
                        e.printStackTrace();
                        response.setHeader("Error", e.getMessage());                            
                    }

ただし、指定されたパスにファイルを書き込んでいるときに次のエラーが発生します: -

保存先: D:\Z-Main\Projects\Android Projects.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\UploadFileServerSide\ java.io.FileNotFoundException: D:\Z-Main\Projects\ Android Projects.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\UploadFileServerSide (アクセスが拒否されました) at java.io.FileOutputStream.open(ネイティブ メソッド) at java.io.FileOutputStream.(不明なソース) java.io.FileOutputStream.(不明なソース) at org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:426) at org.apache.jsp.UploadHandler_jsp._jspService(UploadHandler_jsp.java:154) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) で javax.servlet.http.HttpServlet.service(HttpServlet.java:722) で org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ジャバ:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) で org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) で javax.servlet.http.HttpServlet.service (HttpServlet.java:722) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) org.apache. org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java: 472) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) で org.apache.catalina.valves.ErrorReportValve.org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) の invoke(ErrorReportValve.java:98) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) の org.apache .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java) :565) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) で java.util.concurrent.ThreadPoolExecutor$Worker.runTask(不明なソース) で java.util.concurrent.ThreadPoolExecutor でjava.lang.Thread.run(不明なソース) の $Worker.run(不明なソース)AccessLogValve.invoke(AccessLogValve.java:927) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org .apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor .run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(出典不明)AccessLogValve.invoke(AccessLogValve.java:927) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org .apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor .run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(出典不明)118) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) で org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler .process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java .util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) java.lang.Thread.run(不明なソース)118) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) で org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler .process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java .util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) java.lang.Thread.run(不明なソース)process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java. util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) で java.lang.Thread.run(不明なソース)process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java. util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) で java.lang.Thread.run(不明なソース)

問題はどこだ。現在、Tomcat Eclipse プラグインを使用していますが、このエラーがコンソールに表示されます。Android アプリケーションで同じコードを呼び出していますが、正常に動作しています。役立つ詳細をご案内します。eclipse サーバー プラグイン フォルダーにある catalina.policy ファイルを編集して、次の行を追加しようとしました: -

grant codeBase " file:${catalina.base}/webapps/UploadFileServerSide/-" {
  ermission java.io.FilePermission "${tomcat.home}/-","read,write"; };

Eclipseからサーバーを再起動し、異なる結果を期待していますが、これまでのところ運がありません。私はどこで迷っていますか?

4

1 に答える 1

0

JSPではなくサーブレットを使用し、ページの送信中にPOSTメソッドを使用すると、問題は解決します。変!!!!残りのものはほとんど同じです。サーブレットはサーバー上でJSPと同じレベルのアクセス権を持っていると思うので、なぜそれが起こったのかまだ混乱しています。私の仮定が間違っているかもしれません!

于 2012-10-02T13:04:37.553 に答える