作者guardlan (亚修)
看板PHP
标题Re: [请益] 档案上传成功,但找不到暂存档
时间Tue Oct 12 13:01:15 2010
※ 引述《GoodTauSo (一再的失败...)》之铭言:
: 试了很多方法,都是回传成功,但找不到暂存档.
: 大致上就是以下写法
: if (move_uploaded_file($_FILES['thefile']['tmp_name'],
: $_FILES['thefile']['name']))
: {
: print '<p>successfully uploaded</p>';
: print $trgt;
: } else
: 略...
: }
: echo "Select a file:";
: echo "<form action='unit2.php' enctype='multipart/form-data' method='post'>
: <p><br />
: <input type='hidden' name='MAX_FILE_SIZE' value='10000000' />
: <input type='file' name='thefile' /><br /><br />
: <input type='submit' name='submit' value='Upload !' />
: </p>
: </form>
: </body>
: </html>"
: 随便丢了一个小txt档,执行後,显示successfully uploaded
: 可是到$_FILES['thefile']['tmp_name']找不到暂存档.
: 是php.ini设定问题吗?
$result = move_uploaded_file($a, $b);
这指令可以判断 $a 所指定的档案是否透过正常标准的 upload 流程传上来的
如果是,则搬移到 $b 指定的位址去
假设 $a 里面存的路径是 /etc/passwd 之类的位址,那怎麽办?所以一般都会用 move_uploaded_file 这指令来检查
(这只是假设.../etc/passwd非root是无法读取的@@")
另外你有把 $_FILE 的变数印出来看过吗
它应该会长的像这样
[thefile] => Array
(
[name] => MyFile.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php6hst32
[error] => UPLOAD_ERR_OK
[size] => 98174
)
你的程式写这样...
if (move_uploaded_file($_FILES['thefile']['tmp_name'], $_FILES['thefile']['name'])){
略...
}
所以执行的时候会变成这样...
if (move_uploaded_file('/tmp/php6hst32', 'MyFile.jpg')){
略...
}
把 '/tmp/php6hst32' 这个暂存档 移动到 'MyFile.jpg' 这里...(没带路径的结果会被搬到 PHP 执行工作目录下面...)
所以通常会加上路径,例如
if (move_uploaded_file($_FILES['thefile']['tmp_name'], '/var/www/hthocs/upload/'.$_FILES['thefile']['name'])){
略...
}
类似这样...当然路径要先检查是否存在以及能否写入之类的...这地方就不先说明了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.168.178
1F:推 GoodTauSo:暂存档还真的跟php档同目录= =" 10/12 18:20