上传前确定“tmp_name”

时间:2013-11-13 04:15:47

标签: php file upload

确定" tmp_name"上传之前......?

所以我发现了这个:http://phpjs.org/functions/filesize/ 我想在上传过程中检查文件大小,但我需要在上传之前设置tmp_name以便能够跟踪它。

我的代码示例:

<form id="upform" action="'upload.php" method="post" enctype="multipart/form-data" encoding="multipart/form-data" name="upform" target="upFrame" >
  <input id="uploadPic_input" name="uploadPic_input" type="file" value="" onchange="jsFunctionTostartUploadandTrackUpload( 'tmp_name___HERE___' );" />
</form>
<iframe id="upFrame" name="upFrame" frameborder="0" scrolling="auto" ALLOWTRANSPARENCY="true" width="100%" height="450"> </iframe>
<div class="" id="uploadedBytes" > </div>

我想替换&#39; tmp_name_ HERE _ &#39;通过tmp_name,因为提交表单时,它会上传文件并在iframe中显示输出。

function jsFunctionTostartUploadandTrackUpload( tmp_name___HERE___ )
{
  $("#upform").submit();
  checkUpProgress = window.setInterval(function() { $("#uploadedBytes").html ( filesize ( tmp_name___HERE___ ) ); },3000);
}

你明白我想做什么吗?

是否有类似ini_set或其他的方式?

2 个答案:

答案 0 :(得分:0)

  1. 提供的脚本显示下载文件的大小。 tmp_name不是可访问文件,因此您无法从服务器外部测量其大小。

  2. 从php 5.4你可以track upload progress

答案 1 :(得分:0)

好的,我知道为什么javascript中的filesize(tmp_name_ HERE _ )因www.domain.com而无效......

但是修改呢? ajax调用将检查的php(内部服务器路径... / public_html / tmp / tmp_name_ HERE _ 是否可行?

Javascript:

function jsFunctionTostartUploadandTrackUpload( tmp_name___HERE___ )
{
  $("#upform").submit();

  $.ajax
    ({
        type: "POST",
        url: site_url+'/checkUploadedBytes.php',
        dataType: 'json',
        data:'uploading_file_id='+encodeURIComponent (tmp_name___HERE___),
        cache: false,
        //async: false,
        success: function(data)
        {
            $("#uploadedBytes").html(data.uploadedBytes_message1);
        },
        error: function(data)
        {
            $("#uploadedBytes").html("_Error").css("color","red");
        }
    });

}

PHP:

<?php
$uploadedBytes_message1 = filesize ( $_POST['uploading_file_id']; )
echo json_encode(array("uploadedBytes_message1" => $uploadedBytes_message1) );
?>