私はdropzone.jsを使用しています。ファイルを削除しようとすると、サムネイルのみが削除され、サーバーからのファイルは削除されません。いくつかの方法を試しましたが、サーバー側の名前ではなく、クライアント側の画像の名前が表示されるだけです(両方の名前は異なり、暗号化された形式で名前を保存します)。
どんな助けでも大歓迎です..
私はdropzone.jsを使用しています。ファイルを削除しようとすると、サムネイルのみが削除され、サーバーからのファイルは削除されません。いくつかの方法を試しましたが、サーバー側の名前ではなく、クライアント側の画像の名前が表示されるだけです(両方の名前は異なり、暗号化された形式で名前を保存します)。
どんな助けでも大歓迎です..
別の方法、
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 } );
});
プロセスの後、プレビュー テンプレートはDropzone
、span
.
最も簡単な方法
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);
?>
[削除] ボタンをクリックすると、ファイルが削除されます。
これを 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;
?>
これがあなたのお役に立てば幸いです:)
この単純なソリューションは、単一ファイルのアップロードで機能し、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}
});
}
私の場合、サーバーは特定の画像ごとに 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 イベントによってサーバー上のファイルを削除していました。