我有一个表单输入 type="file"元素,它接受一个文件。当我上传它并将其传递到服务器端 php 脚本时。
如何逐字节写入 $_FILES["file"]["tmp_name"] 中存储的临时文件? 下面的代码不起作用。好像是写在请求的最后。例如,如果连接在中间丢失,我想查看 40% 是否已完成,以便我可以恢复它。
有什么指点吗?
$target_path = "uploads/";
$target_path = $target_path . basename($name);
if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
// Open temp file
$out = fopen($target_path, "wb");
if ($out) {
// Read binary input stream and append it to temp file
$in = fopen($_FILES['file']['tmp_name'], "rb");
if ($in) {
while ($buff = fread($in, 4096))
fwrite($out, $buff);
}
fclose($in);
fclose($out);
}
}
最佳答案
直到上传完成(或失败)后,PHP 才会将控制权移交给文件上传目标脚本。您无需执行任何操作即可“接受”该文件 - PHP 和 Apache 会负责将其写入 $_FILES 数组的 ['tmp_name']
参数中指定的文件名。
如果您尝试恢复失败的上传,则需要更复杂的脚本。
关于php - 如何在php中逐字节上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7840503/