我正在尝试让用户将图像上传到服务器。它几乎可以完成预期的工作,但是服务器上的文件已损坏。
<input id=inputPic name='pic' type='file' accept='image/*'>
<button onclick='uploadPic(\"inputPic\");'>Save</button>
用于在客户端上载的javascript:
function uploadPic(inputId){
var xhr = new XMLHttpRequest();
xhr.open("POST", "...uploadImage");
var data = new FormData();
data.append("file", document.getElementById(inputId).files[0]);
xhr.send(data);
}
用于在服务器端处理上传请求的Java:
@POST
@Path("{key}/uploadImage")
public void upload(@PathParam("key") String key, String data) {
uploadImage(key, data);
}
public void uploadImage(String name, String data){
try{
byte[] bytes = data.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("..."+name+".png")));
stream.write(bytes);
stream.flush();
stream.close();
}
catch(Exception e){
System.out.println("Error while uploading image");
e.printStackTrace();
}
}
没有任何错误。该文件在服务器上创建,但文件已损坏。有什么想法可以解决这个问题吗?
编辑:
我认为我正在接近解决方案。好像我必须更改字符集,因为它看起来像
“。PNG IHDR .... a.bKGD ..... pHYs.tIME。&-。IDATx.y ..?Vo。] wA。 B��...“
代替
“‰PNG IHDR€€Ã>aËbKGD½½½½” pHYsšœtIMEâ &-££IDATxÚíy〜“Õï?ïVoíÕ] ½wA³µ€Bƒ€” j *âƒ7...“。
我只是不知道我实际上需要使用哪个字符集。
编辑:
好吧...不只是字符集。
编辑:
开始工作。我在客户端使用了readAsDataURL将在服务器端编码和解码的数据发送到文件中!