제출 된 양식의 숨겨진 입력 필드를 통해 양식 데이터를 FormData();
으로 전달하는 Ajax 호출을 통해 파일을 외부 서버에 업로드하면 모든 것이 잘 동작합니다.Ajax를 통해 파일 업로드 append()가 작동하지 않는 추가 데이터
그러나 양식 데이터를 FormData();
에 전달할 때 FormData();
에 추가하면 작동하지 않습니다.
어떻게 데이터를 추가 할 때 숨겨진 필드를 통해 데이터를 전달할 때 데이터 처리가 어떻게 다른지 알 수 있습니다. 두 번째 경우에는 작동하지 않기 때문에.
이 방법은 작동합니다
$('#myform').on('submit', function(e){
var formdata = new FormData(this);
$.ajax({
url: 'https://external-website.com/',
type: 'POST',
data: formdata,
processData: false,
contentType: false
});
});
<form id="myform" method="post" enctype="multipart/form-data">
<input type="hidden" name="key1" value="value1">
<input type="hidden" name="key2" value="value2">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
이 방법은 작동하지 않습니다
$('#myform').on('submit', function(e){
var formdata = new FormData(this);
formdata.append('key1', 'value1');
formdata.append('key2', 'value2');
$.ajax({
url: 'https://external-website.com/',
type: 'POST',
data: formdata,
processData: false,
contentType: false
});
});
<form id="myform" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
당신은 내 대답을 가장 좋은 것으로 표시했지만,'e.preventDefault()'를 사용한다면 아무 것도 대답하지 않습니다. 문제의 진정한 원인을 찾아 냈습니까? –
이 서버가 사용중인 플랫폼/기술/스택이 무엇인지 알고 있습니까? 어떤 종류의 공공 서비스인가요? 나는 접근하고 시도 할 수 있습니까? 나는 그것이 왜 작동하지 않는지 궁금 해서요. –
감사합니다. 나는 PHP 녀석이 아니지만 내가 Google에서이 함수를 이해하면 특정 매개 변수가있는 폼을 생성 할 수 있습니다. 제출시 Amazon s3에 파일을 uppload하고 어딘가에 저장할 수 있습니다. 필드를 숨기고 싶지 않으므로 이러한 매개 변수를 FormData에 추가하려면 일부 js 코드를 생성해야하며 아마도 오류 일 수 있습니다. 오타 또는 인코딩 문제 또는 다른 것. 나는 당신이 폼과 js 코드에 의해 생성 된 요청을 매우 철저하게 비교할 것을 제안한다. 오류가 있어야합니다. –