我正在尝试使用JQuery发布文件。以下是我的代码。
<script language="javascript">
$(document).ready(function() {
$('#frmUpdateProfile').on("submit", function(event) {
event.stopPropagation(); // Stop stuff happening
event.preventDefault(); // Totally stop stuff happening
var data = {
"FileName" : event.target.FileName.files,
"_token" : "{!! csrf_token() !!}"
};
$.ajax({
url: '{{URL::route("UpdateProfile")}}',
method: "POST",
async: true,
data: JSON.stringify(data),
processData: false,
contentType: "application/json; charset=utf-8",
success: function (msg) {
SuccessCallback(msg);
},
error: function (jqXHR) {
ErrorCallback(jqXHR);
}
});
});
});
</script>
我试过了processData: false,
。在Js中进行调试时,您可以检查图像是否在数据中。以下是截图。
但是当我在Laravel中打印请求数据时,它会显示空白数组。
Html表单在这里
<form method="POST"
action="http://localhost:1234/AS6-Code/public/UpdateProfile"
accept-charset="UTF-8"
enctype="multipart/form-data"
id="frmUpdateProfile">
<input name="_token" type="hidden" value="26KWkWdNqe5iOFE8VRBf1dRnL5xKxwN25jg3tAFW">
<input type="hidden" name="_token" value="26KWkWdNqe5iOFE8VRBf1dRnL5xKxwN25jg3tAFW">
<input multiple="1" name="FileName" type="file">
<input class="btn btn-info" type="submit" value="Update">
</form>
我做错了吗?
答案 0 :(得分:1)
尝试使用FormData
发送您的请求:
var data = new FormData($('#frmUpdateProfile')[0]);
还将contentType设置为false:
contentType: false
同时更新
event.target.FileName.files
到
event.target.FileName.files[0]
答案 1 :(得分:1)
event.target.FileName.files
是一个FileList对象。我相信你需要event.target.FileName.files[0]
。