私はValumsの素晴らしいファイルアップローダーを使用しています - https://github.com/valums/file-uploader
追加したいことの 1 つは、ユーザーのアカウント残高に基づく制限です。
最初の画像は常に無料なので、残高が 0 の場合でも 1 枚の画像をアップロードできます。
追加の画像には 0.50 相当またはクレジットが必要です。十分なクレジットがない場合、警告が表示され、ファイルはアップロードされません。
残高はphpセッション変数から受け取ることができます$_SESSION['user']['credit']
これがこれまでのコードです
function createUploader(){
var running = 0;
var uploader = new qq.FileUploader({
multiple: true,
element: $('#file-uploader')[0],
action: 'classes/upload.item.php',
allowedExtensions: ['jpg', 'png', 'gif'],
params: {item: '<?php echo $item_id ?>'},
onSubmit: function(id, fileName){
running++;
$('.button').replaceWith('<a class="button large grey full-width">Please wait...</a>');
},
onComplete: function(id, fileName, responseJSON){
running--;
$(".thumbnails").append('<li class="span2"> <a class="thumbnail"><img src="<?php echo $path; ?>'+fileName+'" /></a> </li>');
if(running==0){
$('.button').replaceWith('<a class="button large green full-width" href="confirm/<?php echo $item_id; ?>">Continue to next step</a>');
}
},
onCancel: function(id, fileName){
running--;
},
debug: true
});
}
申し訳ありませんが、質問は、私が上で説明したことを実装するためのアドバイスを提供できますか?
乾杯
編集: 以下の推奨事項を使用して次のことを試しました(おそらく間違っています)。
ファイルのアップロードを停止しようとしてreturn false
失敗しました。アップロードはすぐに開始され、アラートによって一時停止されたようで、アラートが閉じられるとアップロードが完了します。
ドキュメンテーションによると
onSubmit(String id, String fileName) - ファイルがコードのアップローダー部分に送信されると呼び出されます。これは、ファイルのアップロードがこの時点で開始されるという意味ではないことに注意してください。アップローダへの送信を防ぐには、false を返します。
<?php
// count uploaded files
$path = 'uploads/' . $_SESSION['user']['username'] . '/' . $item_id . '/thumbs/s_';
$files = glob($path . '*.*');
// has free upload been used yet? incase of page refresh etc
if (count($files) >= 1) {
$used_free = 'true';
} else {
$used_free = 'false';
}
?>
<script>
function createUploader(){
var credit = <?php echo $_SESSION['user']['credit'] ?>;
var used_free = <?php echo $used_free ?>;
var running = 0;
var uploader = new qq.FileUploader({
multiple: true,
element: $('#file-uploader')[0],
action: 'classes/upload.item.php',
allowedExtensions: ['jpg', 'png', 'gif'],
params: {item: '<?php echo $item_id ?>'},
onSubmit: function(id, fileName){
console.log(used_free);
if (!used_free) {
used_free = 'true';
running++;
$('.button').replaceWith('<a class="button large grey full-width">Please wait...</a>');
} else {
$.get('ajax/getCredit.php', function (data) {
if (data.credit >= 0.5) {
running++;
$('.button').replaceWith('<a class="button large grey full-width">Please wait...</a>');
} else {
alert('you do not have enough credits');
return false;
}
}, "json");
}
},
onComplete: function(id, fileName, responseJSON){
running--;
$(".thumbnails").append('<li class="span2"> <a class="thumbnail"><img src="<?php echo $path; ?>'+fileName+'" /></a> </li>');
if(running==0){
$('.button').replaceWith('<a class="button large green full-width" href="confirm/<?php echo $item_id; ?>">Continue to next step</a>');
}
},
onCancel: function(id, fileName){
running--;
},
debug: true
});
}
</script>
単純化すると、これは機能します
function createUploader(){
var credit = <?php echo $_SESSION['user']['credit'] ?>;
var used_free = <?php echo $used_free ?>;
var running = 0;
var uploader = new qq.FileUploader({
multiple: true,
element: $('#file-uploader')[0],
action: 'classes/upload.item.php',
allowedExtensions: ['jpg', 'png', 'gif'],
params: {item: '<?php echo $item_id ?>'},
onSubmit: function(id, fileName){
if (!used_free) {
used_free = 'true';
running++;
$('.button').replaceWith('<a class="button large grey full-width">Please wait...</a>');
} else {
if (credit >= 0.5) {
running++;
credit = credit - 0.5;
$('.button').replaceWith('<a class="button large grey full-width">Please wait...</a>');
} else {
alert('you do not have enough credits');
return false;
}
}
},
onComplete: function(id, fileName, responseJSON){
running--;
$(".thumbnails").append('<li class="span2"> <a class="thumbnail"><img src="<?php echo $path; ?>'+fileName+'" /></a> </li>');
if(running==0){
$('.button').replaceWith('<a class="button large green full-width" href="confirm/<?php echo $item_id; ?>">Continue to next step</a>');
}
},
onCancel: function(id, fileName){
running--;
},
debug: true
});
}
次に、クレジットを差し引く確認ページでアップロードされたファイルをカウントしています