java - 将上传的图像文件保存在服务器上 - Java
问题描述
我试图让用户将图像上传到服务器。它几乎在做它应该做的事情,但是服务器上的文件被破坏了。
<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..时间.&-..IDATx.y..?.Vo.].wA..B. ……”
代替
“‰PNG IHDR € € Ã>aË bKGD ÿ ÿ ÿ ½§“ pHYs šœ tIMEâ &-£〜ª IDATxÚíy〜”Õï?ïVoíÕ]½wA³µ€Bƒ€“j*âƒ7...”。
我只是不知道我实际需要使用哪个字符集。
编辑:
好的......它不是/不仅仅是字符集。
编辑:
让它工作。我在客户端使用 readAsDataURL 将在服务器端编码和解码的数据发送到文件!
解决方案
推荐阅读
- python - 你如何下载画中画?
- r - 删除 1) 开始和结束模式和 2) 如果没有结束模式、开始模式和结束之间的字符
- .net-core - 取消引用 SemaphoreSlim 时会发生什么?
- java - 为什么我在 Java 中得到奇怪的运行时?
- java - Spring boot JPA决定实体的级联顺序
- android-studio - 我无法调用我的按钮,它给了我错误“未解决的参考”
- python - 使用 HTML 的 Jupyter Notebook Preloader
- google-sheets - 在 Google 工作表中排除具有过滤视图的列
- linux - 在汇编代码中调用 pthread_create 时应该为寄存器设置什么值?
- javascript - 反应:无效的钩子调用错误与rc-pagination