Web開発者はしばしば出会いは、ファイル、および保存されたファイルをアップロードするには、ユーザーが必要です。
通常、我々は、Tomcatと同じサーバー上に保存されたファイルを入れていませんが、ストア・ファイルへの専用ファイルサーバーがあります。
どのように、ファイルサーバに専用のサーバーにファイルを転送するためにFTPを使用するように選択することができ、この時間は、ファイルを保存します。
私たちが必要なもの、ファイルを転送するためにFTPを使用すると、JARパッケージ、I Ubuntuを選択したファイルサーバであります
すべての操作は、実質的に、このクラスベースのオブジェクトをFTPClientています
問題に注意を払う必要があるFTPサーバにファイルをアップロードするには、ファイル名をエンコードし、そうでない場合は符号化形式、文字化けするサーバーです。
今、FTP経由でファイルをアップロードおよびダウンロードする方法について説明します。
FTPサーバ
// FTPクライアントを作成し、すべての操作がFTPClinet基づいて
FTP =新しい新しいFTPClientは(FTPClient);
FTPサーバーへ//接続
( "192.168.218.133")ftp.connect;
//サーバで認証が必要な場合は、ログインするアカウントとパスワードの必要性
( "ワトソン"、 "yehh1995")をftp.login;
//サーバのステータスコードが返されます
; int型= ftp.getReplyCode)(返信
のSystem.out.println(返信);
/ *
*かどうかを決定します成功した接続
肯定応答の完成から始まる* 2つのすべてのコード。
* FTPサーバが正常に完了し、コマンドを完了するために、最終的な肯定応答を送信します。
* /
IF(FTPReply.isPositiveCompletion(返信)!){
Ftp.disconnect();
のSystem.out.println( "接続に失敗しました");
リターン;
}
System.out.println(「正常に接続」);
のフォルダに切り替え
ftpClient.changeWorkingDirectory(「/ FTPを」);
フォルダを作成
ストアファイルへの内部/ FTP /画像に私はしたいが、私たちが最初にこのファイルを作成する必要があります
//は成功を作成するかどうかを示すブール値を返す
ブールisCreateは= ftpClient.makeDirectory(「/ FTP /画像を」);
アップロードファイルは
//ファイルアップロードの種類を設定
ftpClient.setFileType(FTP.BINARY_FILE_TYPEを);
//ファイルを取得します入力ストリーム
FileInputStreamの新しい新しいFIS =のFileInputStream(「E:/1.jpg」);
FTPサーバーにファイルをアップロードするには、//コールstoreFile方法
//最初のパラメータはサーバパスにアップロードされたファイル名が含まれている
ブールisUpload = ftpClient.storeFile( "/ FTP /画像/ upload.jpg"、FIS);
トラバース現在のフォルダ
FTPFILE [] = ftpClient.listFilesリスト();
(FTPFILE FTPFILE:リスト)のための{
のSystem.out.println(「名: "+ ftpFile.getName());
System.out.printlnは("グループ: "+ ftpFile.getGroup());
System.out.printlnは(" RwaListing:「+ ftpFile.getRawListing());
System.out.println( "サイズ:" + ftpFile.getSize());
System.out.println( "タイプ:" + ftpFile.getType());
System.out.println( "ユーザー:" + ftpFile.getUser());
System.out.println( "タイムスタンプ:" + ftpFile.getTimestamp());
System.out.println( "クラス:" + ftpFile.getClass());
}
输入如下图所示
ダウンロードファイル
のFileOutputStream fosの=新しい新しいのFileOutputStream( "E:/upload.jpg");
boolean型isDown = ftpClient.retrieveFile( "/ FTP / RFロイヤリティーフリー/ upload.jpg"、FOS);
コールretrieveFile、最初の引数は、あなたがダウンロードしたいということです画像パスは、第2のパラメータは、ブラウザに応答することができる、出力ストリームをローカルファイルに保存することができる、処理ファイル出力ストリームです。
注:
サーバーへのアップロードファイルを、ファイルアップロードの1 storeFileタイプを呼び出す前に設定する必要がありそうでない状況が破損したファイルを表示されることがあります
いくつかのタイプはFTPクラスの静的メンバ変数です
ここで選択したすべてのBINARY_FILE_TYPEに、アップロードのバイトストリームであるため、
2.ファイル名エンコーディングの問題
ファイル名をアップロードする場合は、非常に可能性の高いサーバーの内部で文字化け、中国で、これが原因と私たちのバイトコードエンコーディングの不一致とエンコーディングサーバによるものです。
ソリューションは、ファイルサーバのエンコーディングUTF-8、または再度ファイル名を再エンコードを変更することで、その後、storeFile合格します
文字列のパス=新しい文字列( "/ FTP /画像/ .getBytes( " UTF-8")、 "ISO-8859-1" .jpgのある絵");
ブールisUpload = ftpClient.storeFile(パス、FIS) ;
3.アクセス許可の問題
問題のアカウントの権限ので、あなたはファイルのパーミッションを作成し、アップロードするファイルフォルダは、ファイルを読み取ることができない原因となる、700であったかもしれません。この時、手動でファイルのアクセス権を設定する必要があります。
//セットファイルのパーミッション
ブールISSET = ftp.sendSiteCommand( "chmodの744 " +パス);
オリジナルリンクします。https://blog.csdn.net/WatsonYee/article/details/82389769