gpt4 book ai didi

javascript - 从 javascript/jquery 中的 formData 中删除特定文件

转载 作者:行者123 更新时间:2023-11-27 22:36:01 28 4
gpt4 key购买 nike

所以我制作了一个脚本,您可以在使用 ajax 请求发送所有图像之前预览多个图像。所有脚本将在帖子末尾以 c/C 形式显示,但您也可以在这里找到它:http://aeronet.be/TESTIMG/

效果很好!

现在,当用户单击图像时,我想从 formData 数组中删除所选图像。目前,当您单击某个图片时,它仍然会出现在服务器端。

为了做到这一点,我的表单数据如下所示:

form_data {
'name_of_image' : file_data,
'name_of_image' : file_data,
}

我将 name_of_img 放在 img 预览的 alt 属性中,当您单击图像时,它会执行以下操作:

var filename = $(this).attr('alt');
var newfilename = filename.replace(/\./gi, "_");
delete form_data[newfilename];
$(this).remove();

我改变了“。”与“_”因为在我的服务器端数组看起来像这样

  array (size=1)
'favicon_ico' =>
array (size=5)
'name' => string 'favicon.ico' (length=11)
'type' => string 'image/x-icon' (length=12)
'tmp_name' => string 'C:\wamp\tmp\php96C9.tmp' (length=23)
'error' => int 0
'size' => int 145388

所以我的问题是:如何在发送之前从 formData 数组中删除给定的 img?

HTML:

<input id="avatar" type="file" name="avatar[]" multiple />
<button id="upload" value="Upload" type="button">upload</button>

<div class="preview">
</div>

<div class="return_php"></div>

<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>

javascript/jquery:

$(document).ready(function(){
var form_data = new FormData();
var number = 0;

/* WHEN YOU UPLOAD ONE OR MULTIPLE FILES */
$(document).on('change','#avatar',function(){
console.log($("#avatar").prop("files").length);
len_files = $("#avatar").prop("files").length;
for (var i = 0; i < len_files; i++) {
var file_data = $("#avatar").prop("files")[i];
form_data.append(file_data.name, file_data);
number++;
var construc = '<img width="200px" height="200px" src="' + window.URL.createObjectURL(file_data) + '" alt="' + file_data.name + '" />';
$('.preview').append(construc);
}
});

/* WHEN YOU CLICK ON THE IMG IN ORDER TO DELETE IT */
$(document).on('click','img',function(){

var filename = $(this).attr('alt');
var newfilename = filename.replace(/\./gi, "_");
delete form_data[newfilename];
$(this).remove();

});

/* UPLOAD CLICK */
$(document).on("click", "#upload", function() {
$.ajax({
url: "target.php",
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data, // Setting the data attribute of ajax with form_data
type: 'post',
success: function(data){
$('.return_php').html(data);
}
})
})
});

PHP - TARGET.PHP

<?php


var_dump($_FILES);

?>

最佳答案

使用delete()方法:

form_data.delete($(this).attr('alt'))
$(this).remove()

关于javascript - 从 javascript/jquery 中的 formData 中删除特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085031/

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