현재 사용자가 이미지를 서버에 업로드하는 간단한 프로젝트를 진행하고 있습니다. 나는 여기에 내 문제를 언급하기 전에 내가하고 있어요 방법은 다음과 같습니다ajax를 사용하여 큰 파일을 보내는 방법은 무엇입니까?
클라이언트 :
var dataURL = sendingcanvas.toDataURL("image/*");
var imagedatatosend = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
formdata = {
'image': imagedatatosend
};
$.ajax({
url: '../receive',
type: 'POST',
data: formdata,
encode: false,
success: function(result){
alert(result);
}
});
참고 : imagedatatosend
크기가 5메가바이트보다 낮은 선택된 정확히 파일 데이터가 포함되어 있습니다.
기본적으로 사용자는 <input type="file"
태그를 사용하여 이미지를 선택합니까 canvas
에 그 선택된 파일을 base64로 변환하여 서버로 보내도록 설정합니다.
자바 서버 :
String datareceived = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
byte[] bImg = Base64.decodeBase64(datareceived.getBytes("UTF-8"));
FileOutputStream fos = new FileOutputStream("hi.jpg");
fos.write(bImg);
fos.close();
은 내가 위의 코드는 무엇을 설명 할 필요가없는 것 같아요. 하지만 나는 심각한 성능 문제에 직면하고있다. 심지어 System.out.println(datareceived);
을 시도해도 파일을 hi.jpg
에 기록하는 데 막대한 시간이 필요하다. 마우스를 클릭하여 서버 콘솔에서 응답하는 데 몇 초가 걸린다.
나는 왜 그런 일이 일어나는 지 모르겠다. 이미지 데이터를 multipart 또는 무엇으로 보내야 하나?
모든 응답은 사전에 감사하고 감사하고 있습니다 :
, 당신은 귀하의 질문에 태그의 일부를 제거 할 수 있습니다. –
'$ .ajax'에'encode' 옵션이 있다고 생각하지 않습니다.'processData'와'contentType'을 모두'false'로 설정해야합니다.하지만 B64를 보낼 때 필요하지는 않습니다. 문자열 대신 실제 이미지 – adeneo
@adeneo 방금 processData와 contentType을 모두 false 값으로 추가했습니다.하지만 여전히 같은 문제가있는 행운은 없습니다. –