Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面左侧通过AJAX删除图像_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 在页面左侧通过AJAX删除图像

Javascript 在页面左侧通过AJAX删除图像,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我目前正在编写一个表单,用户也可以上传图像。图像将上载到我的服务器以生成预览 如果用户提交表单,一切都会很好。但是如果他们关闭编辑器呢?在这种情况下,映像将永远存储在服务器上,并使用所需的空间 我如何处理图像已上载但表单尚未提交的情况 我想到的一个选项是使用unload函数触发AJAX调用,如果用户关闭选项卡,该调用将删除服务器上的图像: $( window ).unload(function() { //Make AJAX call here and pass the name of th

我目前正在编写一个表单,用户也可以上传图像。图像将上载到我的服务器以生成预览

如果用户提交表单,一切都会很好。但是如果他们关闭编辑器呢?在这种情况下,映像将永远存储在服务器上,并使用所需的空间

我如何处理图像已上载但表单尚未提交的情况

我想到的一个选项是使用unload函数触发AJAX调用,如果用户关闭选项卡,该调用将删除服务器上的图像:

$( window ).unload(function() {
  //Make AJAX call here and pass the name of the file
});

还有什么其他选择?如何处理此问题?

您可以通过另一种方式,每天检查一次或两次上传的所有图像,对于每个文件,检查db行,按文件名选择,如果找不到行,则删除该文件。

如果用户未提交上载文件的表单,则该文件尚未上载,不会存储在服务器上。没有必要做任何事情。

我现在已经改变了一切。我不会在选择过程中上传它。为此,我将dropzone设置设置为autoProcessQueue:false。在此之后,我使用文件读取器获取预览,而无需上传到我的服务器:

this.on( "addedfile", function () {
    this.files.length > this.options.maxFiles && this.removeFile( this.files[0] );
    let fileReference = image.files && image.files[0],
        reader        = new FileReader();

    reader.onload = ( e ) => {
        jQuery( "#image" ).attr( "src", e.target.result );
    };

    reader.readAsDataURL( fileReference );
} );

如果用户确实使用了该图像,则该图像与其用途之间的链接将位于数据库中。因此,除了要在卸载时删除外,我会定期检查服务器上没有在任何地方使用的所有图像,以说明浏览器崩溃和卸载处理程序可能无法执行的其他情况,但用户确实上传了一个图像。可能会修改用户提交表单时运行的服务器端代码t—将图像移动到“已处理”目录—然后定期清除所有未移动的图像。使用cron作业清理临时目录因为这不是一个意见问题……您问这是一个好方法吗?这显然是在征求意见。我试图让这成为一个非基于意见的问题,同时仍然包括你现有的尝试,这样你就不会试图否决投票。但是仍然没有一个明确的答案,因此您可能只会收到已经提供的评论。我正在上传输入类型文件更改的文件,以便用户预览。这将是一个有效的选项:同时提交表单和图像。但OP明确指出,图像是上传到服务器的,这与问题的整个前提一起,意味着图像是在提交之前上传的。我猜他会立即将图像保存到服务器,用户会上传,而不是在表单提交上。@Jo先生,这不是一个好的实现。如果需要向用户显示预览,则不必将其发送到服务器。我也使用过Dropzone,但仍然记得它有一个接口,它返回所选文件的img对象,您可以使用该对象。e、 g将其传递给页面上的任何图像标签进行预览。只要在谷歌上搜索一下,我敢打赌你会在上面找到很多实现。也许你对它的实施是错误的