我想在上传代码中添加进度条 所以我已经安装了uploadprogress扩展(实际上我已经将我的wamp服务器降级为2.0,因为这个已经有扩展但新版本似乎有问题)
这是我的后端代码
///////////////////上传
<?php
if (isset($_POST['upload'])) {
echo 'UPLOADING . . . <br />';
$location = './uploads';
$new= uniqid().'.'.end(explode('.' , basename($_FILES['mailfile']['name']) ));
if(move_uploaded_file( $_FILES['mailfile']['tmp_name'],"$location/$new"))
echo 'DONE !! ';
else
echo 'error';
}
///////////////获取上传信息
else if(isset($_GET['get_info']))
{
if (function_exists("uploadprogress_get_info")) {
$info = uploadprogress_get_info($_GET['get_info']);
} else {
$info = 'nofunc';
}
var_dump($info);
}
///////////////上传表格
else
{ $uploadID = substr(md5(microtime(true)), 0, 10);
?>
<form enctype="multipart/form-data" action="uploadprogress.php" method="post" >
<input type="text" name="UPLOAD_IDENTIFIER" value="<?php echo $uploadID; ?>" id="uploadIdentifier" />
<input id="file" name="mailfile" type="file" />
<input type="submit" value="Send File" id="btn" name="upload" />
</form>
<?php
}
这是我的前html / jquery代码 当文件被上传时,它从iframe获取UPLOAD_IDENTIFIER值并将其发送到set()函数,该函数假设通过ajax调用获取上传进度,但它总是返回null
<html>
<head>
<script language="javascript" src="../../js/jquery.js"></script>
<script>
var val;
$(function(){
$('#progress_iframe').load(function() {
var ifr = $(this);
$(this)
.contents()
.find('#btn')
.bind('click', function() {
val = ifr.contents().find('#uploadIdentifier').val();
set();
// do stuff
});
});
})
function set() {
$.get('uploadprogress.php' , {get_info : val} , function(data){
data = $.trim(data);
$('#info').html(data) ;
if(data < 100 )
set();
})
}
</script>
</head>
<body>
<div>
<iframe id="progress_iframe" src="uploadprogress.php" frameborder="0"> </iframe>
<span id="info"></span>
</div>
</body>
</html>
所以文件正在上传没有任何问题我已经尝试了一个大文件,但仍然在上传文件时uploadprogress_get_info为空
答案 0 :(得分:0)
检查服务器上是否可以访问UploadProgress tmp目录。这意味着“uploadprogress.file.filename_template”指的是phpinfo中正确的tmp文件夹。
您可以运行以下代码进行检查。
&lt; div id =“status”style =“border:1px black solid;&lt;?php
$ templateini = ini_get(“uploadprogress.file.filename_template”);
$ testid =“thisisjustatest”;
$ template = sprintf($ templateini,$ testid);
$ templateerror = false;
if($ template&amp;&amp; $ template!= $ templateini&amp;&amp; @touch($ template)&amp;&amp; file_exists($ template)){
// print'('。$ templateini。'是可写的。真实路径是'.str_replace($ testid,“%s”,realpath($ template))。')';
取消链接($模板);
其他{
$ templateerror = true;
}
if(function_exists(“uploadprogress_get_info”)){
if($ templateerror){
print'background-color:red;'';
打印“&gt;问题。”;
if($ template == $ templateini){
print“uploadprogress.file.filename_template($ templateini)中没有%s用于制作唯一的临时文件。请调整。&lt; br /&gt;”;
其他{
打印“$ templateini不可写。&lt; br /&gt;请确保该目录存在且可写入网络服务器。&lt; br /&gt;
或者将ini设置'uploadprogress.file.filename_template'调整为正确的路径。“;
}
其他{
print'background-color:green;“&gt;安装uploadprogress扩展并初步检查显示一切正常';
}
其他{
?&GT;
background-color:red;“&gt;未安装uploadprogress扩展名。
&lt;?php}?&gt;
&LT; / DIV&GT;
如果上面的代码出错,请指向php.ini文件中正确的tmp目录。在windows localhost机器上的Xampp tmp目录的php.ini文件中添加了以下行。 uploadprogress.file.filename_template = C:\ xampp \ tmp \ some_name_%s.txt
现在您的代码应该有效。