gpt4 book ai didi

php - 从 FormData 获取服务器上的数据时遇到问题

转载 作者:行者123 更新时间:2023-12-01 03:09:13 25 4
gpt4 key购买 nike

我在通过 AJAX 上传图片文件时遇到问题。

网页:

<div>
<form id="birdi_image_form">
<input type="file" name="birdi_image" id="birdi_image" ></input>
</form>

<input type="text" name="species"></input>
<textarea name="comments"></textarea>
</div>
<div id="debug"></div>

<script type="text/javascript">

jQuery(function($){
$('#birdi_image').change(function(){
var ima = new FormData($('#birdi_image_form')[0]);

$.ajax({
url:"/bird/bird_scripts/fu.php",
type:"post",
data: ima,
processData: false,
dataType:"text",
success:function(data, textStatus, jqXHR) {
$('#debug').text(data);
}
});
});
});

</script>

/bird/bird_scripts/fu.php:

<?php

$imagedir = '/images';
$tmpfname = tempnam($imagedir, "b_");

echo var_dump($_POST);

if (move_uploaded_file($_FILES['birdi_image']['tmp_name'], $tmpfname)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}

?>

通过网上查找,我希望在我的 $_FILES 中找到内容变量,但这是空的。转储 $_POST var 到屏幕上,如示例中所示,给出了以下内容。 $_POST['birdi_image']给我NULL .

array(68) { ["------WebKitFormBoundaryYCAoI8shwgBavjJP Content-Disposition:_form-data;_name"]=> string(339) ""birdi_image"; filename="test.jpg" Content-Type: image/jpeg ����JFIFdd�� ExifMMbj(1r2��i��B@'B@'Adobe Photoshop CS2 Windows2008:06:24 11:11:48��b�g" ["?o��(�ci�\�R��Μꟑ���]T��z���"]=> string(82) "��� f�zߠ����i���/��v��E~��[,�Y
�s�������1l�G����-���߿�enu'=�v�z���=?Ҳ���"
["�{��<o��ӗ�M��ysnʨo87~;l���۔�"]=> string(172) "�<��t�2~���O�S
�����t���㵺C�}E������}��I�d]c���y}#�����C,�Z��־��V��ynʿ��?�g�*����o��ٌ�.}�y����}��z����w^�]�m�u������z>�37�_C긵��K𭪣�Y-{��뺷��M���ul��Y�"
["c�yhHp����"]=> string(152)
"��[-���1�]��|�����۽Q�\�e���o�~��g������u�.���A��t�]�3�W�ד��b���}>�����%��K���Ѳ�3���zX��qZ��}u��sc�
���N� ^-w�7���\r� ����c��=?՗δX�j" ["C�uw���-��"]=> string(57)
"���m��w��������ѩ���������k��r����m�t�62rIk���m�ߗV��}" ["�"]=>
string(384)
"!�<��B���6*�c��劷Q���uF*��U��������ď,�
y{R���������E%���Q����5.��IE��
�N�����Ο�̿4~R��...............Upload failed.

我之前已经使用完整的表单提交上传了文件。这是我第一次尝试使用 AJAX 来做到这一点。看起来数据正在到达服务器,但我似乎无法从服务器端理解它。正如您在我期望的代码中看到的 $_FILES['birdi_image']存在但它不存在。我做错了什么吗?

谢谢

最佳答案

你必须将内容类型设置为 false,否则 jQuery 会为你设置一个(错误的)

    $.ajax({
url:"/bird/bird_scripts/fu.php",
type:"post",
data: ima,
processData: false,
contentType: false,
dataType:"text",
success:function(data, textStatus, jqXHR) {
$('#debug').text(data);
}
});

关于php - 从 FormData 获取服务器上的数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com