2016-09-14 10 views
0

基本的に私はサーバーにファイルをアップロードするために使用できるクライアントサイドのファイルアップロードを持っています。私のサーバー側ではファイルサイズがMultipartConfigから5MBに制限されていますが、ファイルが制限を超えた場合、プロセス。Javaサーバーでファイルのアップロードを中止する方法はありますか?

サーバー側:FYI

@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, 
maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5) 


public void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws IOException { 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter() ; 
    try{ 
     MultipartRequest multipartRequest = new MultipartRequest(request, "D:\\"); 
    } catch(IOException e){ 
     System.out.println(e.getMessage()); 
     return; 
    } 
    out.print("Successfully Uploaded"); 
} 

:私は私の@MultipartConfigあなたは私がファイルの制限を超えた場合は約言って例外をスローtry and catchを持って見ることができるように私のクラス

のうちファイルが例外を超えています。ここでは、アップロードプロセスを中止し、限界を超えた単純なエラーをクライアントに送信する必要があります。

+0

?応答を使用して、適切なステータスコードと必要なものを送信します。 – Kayaman

+0

'sendError'はこれを行うためのショートカットメソッドです。 – RealSkeptic

+0

さて、私の状況では、 'httpError 409'が適切なエラーであることがわかりました。私は' catch 'の中で 'response.sendError(response.SC_CONFLICT、" File limit has exceeded ");を実行しようとしましたが、 – darees

答えて

-1

httpget.abort()を使用してリクエストを中止またはキャンセルできます。だから、

public class ClientAbortMethod { 

    public final static void main(String[] args) throws Exception { 
     CloseableHttpClient httpclient = HttpClients.createDefault(); 
     try { 
      HttpGet httpget = new HttpGet("http://httpbin.org/get"); 

      System.out.println("Executing request " + httpget.getURI()); 
      CloseableHttpResponse response = httpclient.execute(httpget); 
      try { 
       System.out.println("----------------------------------------"); 
       System.out.println(response.getStatusLine()); 
       // Do not feel like reading the response body 
       // Call abort on the request object 
       httpget.abort(); 
      } finally { 
       response.close(); 
      } 
     } finally { 
      httpclient.close(); 
     } 
    } 

} 

Refer this

関連する問題