画像ファイルをアップロードしていますが、アクセント付きの文字を操作する必要があるため、すべてをUTF-8
.
この JavaScript 関数を使用してアップロードします。
$('#files').change(function(e) {
var formData = new FormData();
for (var i=0; i<this.files.length;i++){
formData.append(this.files[i].name, this.files[i]);
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {
if ( 4 == this.readyState ) {
showMessage("Uploaded.");
}
};
xhr.open('post', 'accoms/upload.jsp', true);
xhr.send(formData);
}, false);
たとえば、「Björk.jpg」という名前のファイルがある場合、FireFox Firebug を使用してサーバーに送信される内容を見ると、次のように表示されます。
Content-Disposition: form-data; name="Björk.jpg"; filename="Björk.jpg"
それはサーバーが受け取るもののようです。
投稿のエンコーディングは次のように表示されます。
Content-Type text/html;charset=UTF-8
通常の形式のデータ入力テキストを他の形式で送信すると、「Björk」という単語が正しく送信され、サーバーが受信します。
その場合のサーバー側のコードは次のとおりです。
mpp=new MultipartParser(request, 100000000);
com.oreilly.servlet.multipart.Part part;
FilePart fp=null;
String fileName="";
files=new ArrayList();
while((part=mpp.readNextPart())!=null){
if (part.isFile()){
fp=(FilePart)part;
fileName=fp.getFileName();
File file=new File(fileName);
long size=fp.writeTo(file);
files.add(file);
}
}
何か案は?
ありがとう。