2017-02-25 5 views
0

をダウンロードすることはできません。ServeltのcontextPathとのServletContextを使用して、任意のファイルのアップロード、ダウンロードに成功アップロードは、私が使用してファイルのアップロードを行って

    ServletContext servletContext = getServletContext(); 
     String contextPath = servletContext.getRealPath(File.separator); 

     String path = contextPath + "\\uploads\\" + session.getAttribute("seusername"); 
     System.out.println(path); 

     File file=new File(path); 
     if(!file.exists()) 
      file.mkdirs(); 
     Part filePart = request.getPart("uploadfile"); 
     //return content type of the file 
     String type = filePart.getHeader("content-type"); 

     //checking content type of file. 
     if (!type.equals("application/x-msdownload")) { 

      final String fileName = getFileName(filePart); 
      myfilename=fileName; 
      try { 
       EncriptFilename= aESCryp.encrypt(fileName); 
       System.out.println(EncriptFilename); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


      OutputStream fout = null; 
      InputStream filecontent = null; 

      try { 
       fout = new FileOutputStream(new File(path + File.separator + fileName)); 
       filecontent = filePart.getInputStream(); 
       int read = 0; 
       final byte[] bytes = new byte[32 * 1024]; 

       while ((read = filecontent.read(bytes)) != -1) { 
        fout.write(bytes, 0, read); 
       } 

       fout.flush(); 
       fout.close(); 
      } catch (Exception er) { 
       System.out.println("error:"+er.getMessage()); 
      } 
     } 

私はそので結構です,,,画像、PDF、DOCファイルをアップロードしています。.. 後私のローカルディスクフォルダのファイルの場所。 D:\ JavaWorkspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP1 \ wtpwebapps \ \アップロードファイル\ユーザー\のjava_coffee_cup_logo1600.png

私の質問は、このファイルをダウンロードする方法...である,, 、 hrefリンクではダウンロードできません。

答えて

0

あなたのウェブアプリケーションは、あなたの投稿内のServletとは逆の動作をすることで、ファイルのダウンロードをサポートできます。

「ダウンロード」Servletを作成し、のServletへのマッピングを設定します(または注釈を使用してマッピングを定義します)。開いてmy-file.jpgを読むためにFileInputStreamを使用して、要求されたファイル名(my-file.jpg)を発見するために、リクエストURLを見て、そして、ダウンロードServlethttp://machine.com/my-app/download/my-file.jpg

:このサーブレットへのURLは次のようになります。 request.getPathInfo()は、ユーザーがダウンロードしたいファイルを特定するのに必要な情報を提供する可能性があります。 javadoc for HttpServletRequest.getPathInfo().

my-file.jpgは、任意の場所に保存できます。 Servletは、要求URLのファイル名とパスをローカルファイルシステムの任意の場所にマップできます。このファイルは別のWebサーバー上に存在する可能性があります。ファイルにアクセスするのはInputStreamを作成するだけで済みます。

ファイルに関するこのパス情報を使用して、FileInputStreamを作成してファイルにアクセスします。次にFileInputStreamServletResponseの出力ストリームにコピーします。このSO postとこのSO postは、InputStreamOutputStreamにコピーする方法を例示しています。

応答の出力ストリームは、response.getOutputStream()のように取得できます。完了したらInputStreamOutputStreamを閉じることを忘れないでください。

関連する問題