【发布时间】:2023-03-11 02:08:01
【问题描述】:
我正在使用共享服务器。
我可以使用 curl 保存外部图像。但我无法将路径和文件信息保存到 mysql。
<form method="post" enctype="multipart/form-data">
<table>
<tr><td><b>URL: </b> </td><td><input type="**text**" name="url" id="url" size=40></td> </tr>
<tr><th colspan=2><p><input name="upload" type="submit" class="box" id="upload" value="Upload"></p></th></tr>
</table>
</form>
<?php
set_time_limit(0);
ini_set('display_errors',true);//Just in case we get some errors, let us know....
if (isset($_POST['upload']))
{
$url = $_POST['url'];
$dir = "./files/";
$fileName = $_FILES['url']['name'];
$fileSize = $_FILES['url']['size'];
$fileType = $_FILES['url']['type'];
$filePath = $dir . $fileName;
$ch = curl_init($url);
$fp = fopen ($local_file, 'w+');
$ch = curl_init($remote_file);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_exec($ch);
curl_close($ch);
include ('db.php');
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
$query = "INSERT INTO upload2 (name, size, type, path ) ". "VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')";
mysql_query($query);
mysql_close($conn);
}
当我将输入类型更改为文件中的文本时,它不起作用。
我需要获取文件信息并保存到mysql服务器
【问题讨论】:
-
我想你已经在这里删除了一大堆 cURL 代码?我很清楚,您想要的是从用户的计算机上传文件,而不是通过 cURL 从 URL 获取它?还是您想要选择两者之一?
-
Yaa curl 评论在此处添加代码时被删除,现在已添加。我希望创建一个以 url 作为输入并将文件保存到服务器的表单。类似example.com/example.jpg
-
对于这么简单的事情,我建议你使用file_get_contents() 而不是搞乱cURL。虽然 cURL 让您可以更精细地控制获取文件的请求,但这不是您需要的,如果您需要添加一些标头或(出于某种奇怪的原因)POST 来获取文件,您可以使用流来做到这一点上下文。
-
file_get_contents() 在我的共享服务器上不起作用:(
-
allow_url_fopen是否已禁用 (var_dump(ini_get('allow_url_fopen'));)?似乎很奇怪,他们应该允许 cURL 但不允许allow_url_fopen...