【问题标题】:PHP Upload from address [closed]PHP从地址上传[关闭]
【发布时间】:2014-02-27 03:37:58
【问题描述】:

我有一点PHP代码来上传我的文件,所有文件都是图片。

我想对其进行一些更改。

HTML 代码:

<form action="" enctype="multipart/form-data" method="post">
<input id="file" name="file" type="file" />
<input id="Submit" name="submit" type="submit" value="Submit" />
</form>

PHP 代码:

<?php

// Upload and Rename File

if (isset($_POST['submit']))
{
$filename = $_FILES["file"]["name"];
$file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
$file_ext = substr($filename, strripos($filename, '.')); // get file name
$filesize = $_FILES["file"]["size"];
$allowed_file_types = array('.doc','.docx','.rtf','.pdf');

if (in_array($file_ext,$allowed_file_types) && ($filesize < 200000))
{
// Rename file
$newfilename = md5($file_basename) . $file_ext;
if (file_exists("upload/" . $newfilename))
{
// file already exists error
echo "You have already uploaded this file.";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
echo "File uploaded successfully.";
}
}
elseif (empty($file_basename))
{
// file selection error
echo "Please select a file to upload.";
}
elseif ($filesize > 200000)
{
// file size error
echo "The file you are trying to upload is too large.";
}
else
{
// file type error
echo "Only these file typs are allowed for upload: " . implode(', ',$allowed_file_types);
unlink($_FILES["file"]["tmp_name"]);
}
}

?>

我的问题是我想从地址上传文件。

php代码应该如何改变?

谢谢。

【问题讨论】:

  • 您需要更具体。 “从地址”没有意义。你能试着重组你的问题吗?什么地址?与您希望它做的相比,它现在做了什么?
  • 来自地址的文件是指来自网址或本地文件资源管理器地址的文件?
  • 在这种情况下,不涉及上传。您需要使用 cURL。见:stackoverflow.com/questions/6476212/…
  • 如果您指的是网址,将其粘贴到文件选择器会自动下载并添加它。
  • @h2ooooooo 地址来自网址

标签: php file-upload upload


【解决方案1】:

如果您的意思是“将 URL 的内容下载到本地文件”,您可以使用 fopenfeoffwritefreadfclose 来实现:

<?php
    function downloadFile($fromURL, $toPath, $bufferSize = 1024) {
        $loadHandle = fopen($fromURL, 'rb');

        if ($loadHandle !== false) {
            $saveHandle = fopen($toPath, 'ab');

            if ($saveHandle !== false) {
                while (!feof($loadHandle)) {
                    fwrite($saveHandle, fread($loadHandle, $bufferSize));
                }


                fclose($loadHandle);
                fclose($saveHandle);

                return true;
            } else {
                fclose($loadHandle);

                throw new Exception('Could not open local file');
            }
        } else {
            throw new Exception('Could not load URL');
        }

        return false;
    }
?>

用法:

<?php   
    try {
        downloadFile(
            'https://www.gravatar.com/avatar/8bf82b417151bafc01248013d984f53f?s=32&d=identicon&r=PG&f=1', 
            '/var/www/download/avatar.png'
        );
    } catch (Exception $e) {
        echo 'Could not download file: ' . $e->getMessage();
    }
?>

【讨论】:

    【解决方案2】:

    这不叫“文件上传”,它叫从远程服务器下载文件并保存在本地。检查以下几种解决方案:

    Need php script to download a file on a remote server and save locally

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2013-02-11
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多