9

私はdropzone.jsを使用しています。ファイルを削除しようとすると、サムネイルのみが削除され、サーバーからのファイルは削除されません。いくつかの方法を試しましたが、サーバー側の名前ではなく、クライアント側の画像の名前が表示されるだけです(両方の名前は異なり、暗号化された形式で名前を保存します)。

どんな助けでも大歓迎です..

4

10 に答える 10

21

別の方法、

responseサーバーからJSON形式またはプレーン文字列で取得します (その後、responseの代わりにのみ使用しますresponse.path)。

dropzone.on("success", function(file, response) {
  $(file.previewTemplate).append('<span class="server_file">'+response.path+'</span>');
});

ここで、サーバーは次のような json を返すことができます。

{
    status: 200,
    path: "/home/user/anything.txt"
}

そのため、これを削除するときにアクセスできる に保存pathしています。span

dropzone.on("removedfile", function(file) {
  var server_file = $(file.previewTemplate).children('.server_file').text();
  alert(server_file);
  // Do a post request and pass this path and use server-side language to delete the file
  $.post("delete.php", { file_to_be_deleted: server_file } );
});

プロセスの後、プレビュー テンプレートはDropzonespan.

于 2014-04-21T09:46:59.700 に答える
9

最も簡単な方法

JS ファイル。削除ボタンをクリックすると、このスクリプトが実行されます。

this.on("removedfile", function(file) {
alert(file.name);

$.ajax({
url: "uploads/delete.php",
type: "POST",
data: { 'name': file.name}
});


});

phpファイル「delete.php」

<?php
$t= $_POST['name'];
echo $t;
unlink($t); 
?>
于 2014-09-10T09:03:12.913 に答える
2

[削除] ボタンをクリックすると、ファイルが削除されます。

これを JS ファイルまたは HTML ファイル (または PHP ビュー/アクション ファイル) に追加します。

<script type="text/javascript">
Dropzone.options.myAwesomeDropzone = { 
// Change following configuration below as you need there bro
autoProcessQueue: true,
uploadMultiple: true,
parallelUploads: 2,
maxFiles: 10,
maxFilesize: 5,
addRemoveLinks: true,
dictRemoveFile: "Remove",
dictDefaultMessage: "<h3 class='sbold'>Drop files here or click to upload document(s)<h3>",
acceptedFiles: ".xls,.xlsx,.doc,.docx",
//another of your configurations..and so on...and so on...
init: function() {
     this.on("removedfile", function(file) {
          alert("Delete this file?");
          $.ajax({
               url: '/delete.php?filetodelete='+file.name,
               type: "POST",
               data: { 'filetodelete': file.name}
          });
     });
}}
</script>

..そして、このコードを PHP ファイルに入れます。

<?php
     $toDelete= $_POST['filetodelete'];
     unlink("{$_SERVER['DOCUMENT_ROOT']}/*this-is-the-folder-which-you-put-the-file-uploaded*/{$toDelete}");
     die;
?>

これがあなたのお役に立てば幸いです:)

于 2016-09-21T13:17:36.620 に答える
0

この単純なソリューションは、単一ファイルのアップロードで機能し、DOM 操作は必要ありません。

PHP アップロード スクリプト

  [...]
  echo $filepath; // ie: 'medias/articles/m/y/a/my_article/my-image.png'

JSドロップゾーン

  this.on("success", function(file, response) {
        file.path = response; // We create a new 'path' index
  });
  this.on("removedfile", function(file) {
        removeFile(file.path)
  });

Dropzone外のJS

var removeFile = function(path){
   //SEND PATH IN AJAX TO PHP DELETE SCRIPT
    $.ajax({
        url: "uploads/delete.php",
        type: "POST",
        data: { 'path': path}
    });
}
于 2016-08-15T18:23:30.553 に答える
0

私の場合、サーバーは特定の画像ごとに deleteUrl を含む ajax 応答を返します。この URL を「data-dz-remove」属性として挿入し、すでに previewTemplate に設定しています。

jqueryを使用すると、次のようになります。

this.on("success", function (file, response) {
    $(file.previewTemplate).find('a.dz-remove').attr('data-dz-remove', response.deleteUrl);
});

その後、この attr はこの URL を使用して ajax 投稿を送信し、上記の removefile イベントによってサーバー上のファイルを削除していました。

于 2014-12-06T19:13:56.940 に答える