我使用Uploadify插件上传图片,我正在做一些像
这样的操作a)当用户上传文件时,会自动删除上传按钮 b)uploadify.php脚本将重命名该文件并将其存储在指定目录中。
这是我用来执行操作的代码。
Jquery代码:
<script type="text/javascript">
$(document).ready(function() {
$('#fileUpload, #fileUpload2').uploadify({
'uploader': 'img/uploadify.swf',
'script': 'uploadify.php',
'folder': 'upload',
'auto' : 'true',
'cancelImg': 'img/cancel.png',
'fileDesc': 'jpg/jpeg',
'displayData': 'percentage',
'fileExt': "*.jpg;*.jpeg",
'sizeLimit' : '8388608',
'fileDataName' : 'file',
onComplete : function(event, queueID, fileObj, reposnse, data)
{
$('#filesUploaded').append('<a href='+fileObj.filePath+'>'+fileObj.name+'</a><br>');
$("#firstUpload").remove();
}
}); });
</script>
并且在php中我使用了date与唯一id的组合来重命名文件,这完全正常工作。
但是当我想查看文件名时,我通过调用div
来实现<div id="filesUploaded"></div>
它显示原始文件名而不是重命名的文件。我尝试更改'+fileObj.name+' to '+response+'
我猜问题是在上面的代码中,因为file.Obj.name打印选定的文件名而不是处理过的文件,当我将其更改为+ response +时,它上传文件并重命名,但在表单页面中它不会打印重命名的文件名。并且进度条组成了100%的进度,它冻结了。
如何让它打印重命名的文件名。?
谢谢
编辑:这是我的PHP代码。
<?php
include('database.php');
$date = date("dFY");
$query = "SELECT MAX(id) as max_id FROM news";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$max_id = $row['max_id']+1;
echo $max_id;
$file1 = "file_$date"."_$max_id.jpg";
if (!empty($_FILES)) {
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = 'upload/';
move_uploaded_file($tempFile,$targetPath.$file1);
}
?>
答案 0 :(得分:4)
对我来说这没用。我正在寻找类似的东西 - 这对我有用:
'onUploadSuccess' : function(file, data, response) {
alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
}
在我的情况下,我使用uploadify.php创建一个唯一的文件名 - 然后我使用echo $ filename - 而不是'1'。这样“数据”总是包含最新的文件名。 干杯
答案 1 :(得分:1)
这是问题所在。 Javascript代码有拼写错误。您已在reposnse
来电中写了response
而不是onComplete
。这样做:
onComplete : function(event, queueID, fileObj, response, data)
然后当您执行+response+
时,脚本将不会挂起并显示MaxID(您从PHP脚本中输出)。