javawebアップロードファイル
アップロードされたファイルのjspの一部
ファイルをアップロードするには、フォームを使用してリクエストをバックエンドに送信するか、ajaxを使用してリクエストをバックエンドに送信することもできます
1.フォームを介してバックエンドにリクエストを送信します
<form id = "postForm" action = "$ {pageContext.request.contextPath} / UploadServlet" method = "post" enctype = "multipart / form-data">
<div class = "bbxx wrap">
<input type = "text" id = "side-profile-name" name = "username" class = "form-control">
<input type = "file" id = "example-file-input" name = "avatar">
<button type = "submit" class = "btn btn-effect-ripple btn-primary">保存</ button>
</ div>
</フォーム>
改善されたコードはフォームタグを必要とせず、コントロールによって直接実装されます。開発者はビジネスロジックのみに集中する必要があります。JSは私たちのためにそれを閉じました
コントロールによって送信されたデータは、非常に明確でデバッグも非常に簡単な監視ツールを介して見ることができます。
2. ajax経由でバックエンドにリクエストを送信します
1。
$ .ajax({
url: "$ {pageContext.request.contextPath} / UploadServlet"、
タイプ:「POST」、
データ:$( '#postForm')。serialize()、
成功:function(data){
$( '#serverResponse')。html(data);
}、
エラー:function(data){
$( '#serverResponse')。html(data.status + ":" + data.statusText + ":" + data.responseText);
}
});
Ajaxは2つの部分に分かれており、1つは初期化であり、ファイルはアップロード前に初期化のAJAXリクエストを通じてサーバーに通知されます。
ファイルのアップロード後にサーバーに通知を送信します
ここでは、MD5の2番目の送信のロジックを処理する必要があります。サーバーに同じファイルが存在する場合、ユーザーは再度アップロードする必要はありませんが、2番目の送信を直接ユーザーに通知します
ここで、2番目のパスのロジックは非常に単純で、特に複雑ではないことがわかります。
var form = new FormData();
form.append( "username"、 "zxj");
form.append( "アバター"、ファイル);
// var form = new FormData($( "#postForm")[0]);
$ .ajax({
url: "$ {pageContext.request.contextPath} / UploadServlet"、
タイプ: "投稿"、
データ:フォーム、
processData:false、
contentType:false、
成功:関数(データ){
console.log(data);
}
});
Java パーツ
ファイル初期化ロジック
ファイルブロックデータを受信します。このロジックでは、ファイルブロックデータを受信します。コントロールは、デバッグを容易にするためにデータを最適化しています。監視ツールを使用すると、コントロールから送信されたデータを確認できます。
注意:
1.上記のJavaコードは直接使用でき、画像パスをアップロードしてデータを収集し、データベースにデータを書き込むだけです。
2.バイトストリームは上記のファイルのアップロードに使用されていますが、他のストリームも使用できます。
3. BeanUtilsは、エンティティの対応する属性をエンティティに割り当てるためのツールです
4.アップロードされたファイルは、request.getParameter( "")を使用してパラメータを取得することはできませんが、各アイテムがファイルか非ファイルかを判断してリクエストを直接解析し、対応する操作を実行します(ファイルはストリームによって読み取られます)。ファイルでない場合は、一時的に地図に保存してください。)
ほとんどのバックエンドコードロジックは同じで、現在MySQL、Oracle、SQLをサポートしています。使用する前にデータベースを構成する必要があります。私が書いたこの記事を参照できます。http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87 %E4%BB%B6%E6%96%AD%E7%82%B9%E7%BB%AD%E4%BC%A0%E4%B8%8A%E4%BC%A0 /
グループに参加して一緒に議論することを歓迎します:374992201