我正在上传图像文件,我需要它们来处理带重音的字符——所以我把所有东西都用到了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);
}
}
有任何想法吗?
谢谢。