この記事では、Javaの特定のコードを共有して、参照用のファイルアップロードおよびダウンロード機能を実装しています。特定のコンテンツは次のとおりです
フロントエンドは、フォームフォームのenctypeプロパティを使用して、データ配信方法をバイナリ「ストリーム」フォームに変更します。サーバー(サーブレット)は、getInputStream()を介してフロー情報を取得し、Java I/Oストリームの基本操作を使用して、サーバーによって一時的に作成されたファイルの温度にフローを書き込みます。次に、基本ファイル操作を再度使用して、一時ファイルのコンテンツを読み取り、傍受し、その情報に基づいて対応するファイルを作成し、特定の情報を読み取ります。ダウンロードするときは、送信されたファイル名に基づいてサーバー上の対応するファイルを見つけてから、出力ストリームに応じてページに出力し、サーブレットの応答タイプと応答ヘッダーを設定します。
特定の伝送プロセスは次のとおりです。
フロー情報の一部は次のとおりです。
特定のコードは次のとおりです。
フロントエンドコード:
<html> <head> <メタhttp-equiv = "content-type" content = "text/html; charset = utf-8"> <title>挿入タイトル</title> <スクリプト> <スクリプト> <src = "js/jquery.js"> </script> </head> <body = "fileupservlet" "inctipe =" "inctipe" <表> <tr> <TD>アップロードファイルを選択してください:</td> <td> <入力ID = "myfile" name = "myfile" file "value" ""/> </td> <td> <入力タイプ= "" submit "balue =" upload "> </td> </tr> <td> $ {infl> </td> </td> </td> </td> </td> </td> <a href = "fileloadownservlet?filename = $ {filename}"> $ {filename} </a> </body> </html>サーブレットパーツのアップロード(コア)
@webservlet( "/fileUpServlet")パブリッククラスfileUpServletはhttpservletを拡張します{private static final long serialversionuid = 1l; / ** * @see httpservlet#httpservlet() */ public fileupservlet(){super(); // todo auto-generated constructor stub}/ ** * @see httpservlet#doget(httpservletrequest request、httpservletresponse応答) 応答); } / ** * @see httpservlet#dopost(httpservletrequest request、httpservletresponse応答) inputstream filesource = request.getInputStream(); // request gest gest gest stream Information string tempname = "d:/temp"; // tempfileはファイルの一時ストレージを表すファイルtempfile = new file(tempname); b [] = new byte [1024]; int n; while((n = filesource.read(b))!= -1)// {outputstream.write(b、0、n)を読み終えるまで、出力ストリームから1024バイトを読み取ります。 } outputStream.Close(); filesource.close(); //入力および出力ストリームを閉じる/*以下は、主に一時的な生成された温度ファイルを解析するための特定のファイル操作であり、ほとんどの知識はJava入力と出力ストリームのコンテンツです! */randomAccessfile randomFile = new RandomAccessFile(TempFile、 "r"); //ランダムストリーム、一時ファイルの読み取りのみを指定し、randomFile.readline(); //読み取り最初の行、無効なデータ、文字列str = randomfile.readline(); EndIndex = str.lastindexof( "/" "); //必要なデータ文字列filename = str.substring(beginindex、endindex); //ファイルname //ファイルコンテンツを再配置し、ファイルContent Randomfile.seek(0); //ファイルポインターが最初から始まることを開始します。 (n = randomfile.readbyte()!= -1 && i <= 4){n == '/n') randomfile.getFilePointer() GetServletContext()。getRealPath( "/")+"Images"; randomAccessFile = new RandomAccessFile(savefile "); randomfile.close();正常に! "); request.setattribute(" filename "、filename); request.getRequestDispatcher("/fildeop.jsp ")。セクションをダウンロードします
保護されたvoid dopost(httpservletrequest request、httpservletresponse応答)Servletexception、ioexception {// todo auto-enerated method stub string filename = request.getparameter( "filename"); string path = getServletContext()。getRealPath( "/")+"images/"; file file = new file(path+filename); // file if(file.exists()){respons.setContentType( "Application/X-MSDownLoad"); //応答タイプを設定します。ここにダウンロードタイプのresponse.setheader( "content-disposition"、 "attachment; filename =/" "+filename+"/""); // inputstream inputstreamを開く= new fileinputStream(file); servletoutputStream outputStream = respons.getOutputStream();バイトb [] = new byte [1024]; int n; while((n = inputstream.read(b))!= -1){outputstream.write(b、0、n); } outputStream.Close(); inputstream.close(); } else {request.setattribute( "result"、 "ファイルは存在しません!ダウンロードが失敗!"); request.getRequestDispatcher( "/fildeop.jsp")。 }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。