使用共享服务器。
我可以使用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服务器
答案 0 :(得分:0)
顺便说一下:
<form method="post" enctype="application/x-www-form-urlencoded">
<table>
<tr>
<td style="font-weight:bold;">URL:</td>
<td><input type="text" name="url" id="url" size=40 value="http://" /></td>
</tr>
<tr>
<!-- Why is this a <th> and not a <td> ? -->
<th colspan="2"><input name="upload" type="submit" class="box" id="upload" value="Upload" /></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'])) {
// Build local file system paths
$baseDir = "./files";
$fileName = basename(rtrim($_POST['url'],'/')); // This means that if someone specifies the root of a domain (/) it will call the local file "domain"
$filePath = rtrim($baseDir,'/')."/$fileName";
// Try to parse the URL we have been given and add any missing required info
if ((!$parts = parse_url($_POST['url'])) || !isset($parts['host'])) die('ERROR: The specified URL is invalid');
$url = (isset($parts['scheme']) && $parts['scheme']) ? $parts['scheme'].'://' : 'http://';
if (isset($parts['user']) && $parts['user']) {
$url .= $parts['user'];
if (isset($parts['pass']) && $parts['pass']) $url .= ':'.$parts['pass'];
$url .= '@';
}
$url .= $parts['host'];
if (isset($parts['port']) && $parts['port']) $url .= ':'.$parts['port'];
$url .= (isset($parts['path']) && $parts['path']) ? $parts['path'] : '/';
if (isset($parts['query']) && $parts['query']) $url .= '?'.$parts['query'];
if (isset($parts['fragment']) && $parts['fragment']) $url .= '#'.$parts['fragment'];
print("Fetching file '$url' to '$filePath'<br />\n");
// Open a local file point in write mode
if (file_exists($filePath)) die("ERROR: The file '$filePath' already exists");
$fp = fopen($filePath,'w') or die("ERROR: Could not open local file '$filePath' for writing!");
// Let's go cURLing...
$ch = curl_init($url);
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);
$fileSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
$fileType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$transferTime = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
print("cURL operation complete (took $transferTime seconds)<br />\n");
// Close cURL and the local file pointer, we're done with them both
curl_close($ch);
fclose($fp);
// Check the $fileSize reported by cURL is the same as the file size on disk
if ($fileSize != ($fs = filesize($filePath))) {
print("WARNING: file size reported by cURL ($fileSize bytes) does not match size of file on disk ($fs bytes)<br />\nUsing size of file on disk for DB insert<br />\n");
$fileSize = $fs;
}
include ('db.php');
$query = "INSERT INTO upload2 (name, size, type, path ) ".
"VALUES ('".mysql_real_escape_string($fileName)."', '$fileSize', '$fileType', '".mysql_real_escape_string($filePath)."')";
print("Running MySQL Query: $query<br />\n");
mysql_query($query);
mysql_close($conn);
print('Done!');
}
?>