2012-04-09 56 views
1

我在问怎么可能上传多个文件(使用jquery.Multifile)到FTP和文件链接到MySQL数据库?我已经有一个HTML表单,可以使用PHP将多个文件上传到我的FTP。上传多个文件到FTP和HTTP链接到文件到MySQL数据库

假设我有两个表(我有其他的领域也是这些表中,但它是不相关的,将它们添加到我的问题):

信息 - > MESSAGEID(PK),标题,日期,消息

文件 - > FILEID(PK),MESSAGEID(FK),fileLink

当用户写一条消息,他可以选择多个文件与jquery.Multifile附件。然后,当用户发送消息时,文件将被发送到FTP,并且将到该文件的http链接发送到数据库。每个文件都应有自己的ID(fileID),这两个表使用字段messageID作为消息表中的主键和文件表中的外键链接在一起。

这是我现在,但我不知道该怎么办的数据库部分:

HTML表单:

<form name="uploader" action="file_upload2.php" method="post" enctype="multipart/form-data"> 
<fieldset> 
    <label for="file">Upload file:</label> 
    <br /> 
     <input type="file" class="multi, remove" name="file[]" value="Upload file" /> 
     <input type="submit" value="submit"/> 
</fieldset> 

这是PHP的一部分($文件路径是我试图做的一个链接到FTP中的文件):

<?php 
include('db.php'); 

mysql_connect("$hostname", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$database")or die("cannot select DB"); 
mysql_query("SET names 'UTF8'"); 

$heading=$_POST['heading']; 
$date=$_POST['date']; 
$message=$_POST['message']; 

$conn = ftp_connect("mysite.org") or die("Cannot connect"); 
ftp_login($conn,"username","password"); 
$uploaddir = 'httpdocs/folder1/folder2/files/'; 

foreach ($_FILES["file"]["error"] as $key => $error) 
{ 
     if ($error == UPLOAD_ERR_OK) 
     { 
       $tmp_name = $_FILES["file"]["tmp_name"][$key]; 
       $name = $_FILES["file"]["name"][$key]; 
       $uploadfile = $uploaddir . basename($name); 
       ftp_put($conn,$uploadfile,$tmp_name,FTP_BINARY); 

      if (move_uploaded_file($tmp_name, $name)) 
      { 
        echo "Success: File ".$name." uploaded to server.<br/>"; 
      } 
      else 
      { 
        echo "Error: File ".$name." can not be uploaded to server.<br/>"; 
      } 
    } 
} 

ftp_close($conn); 

$filepath = "http://mysite.org/folder1/folder2/files/".$name; 

$sql="INSERT INTO message(
heading, 
date, 
message) 
VALUES 
(
'$heading', 
'$date', 
'$message')"; 

$result=mysql_query($sql); 

if($result){ 
header("Location: ../index.php"); 

} 
else { 
    echo $sql . ("Adding message failed <br />" . mysql_error()); 
} 
mysql_close(); 
?> 

回答

0

试试这个

<?php 

include('db.php'); 

mysql_connect("$hostname", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$database")or die("cannot select DB"); 
mysql_query("SET names 'UTF8'"); 

$heading=$_POST['heading']; 
$date=$_POST['date']; 
$message=$_POST['message']; 

$conn = ftp_connect("mysite.org") or die("Cannot connect"); 
ftp_login($conn,"username","password"); 
$uploaddir = 'httpdocs/folder1/folder2/files/'; 

$sql="INSERT INTO message(messageid,heading, date, message) VALUES('Null' , '$heading', '$date', '$message')"; 
$result=mysql_query($sql); 
$lastinsertid = mysql_insert_id($sql); 

foreach ($_FILES["file"]["error"] as $key => $error) 
{ 
     if ($error == UPLOAD_ERR_OK) 
     { 
       $tmp_name = $_FILES["file"]["tmp_name"][$key]; 
       $name = $_FILES["file"]["name"][$key]; 
       $uploadfile = $uploaddir . basename($name); 
       ftp_put($conn,$uploadfile,$tmp_name,FTP_BINARY); 

      if (move_uploaded_file($tmp_name, $name)) 
      { 
        echo "Success: File ".$name." uploaded to server.<br/>"; 
        $filepath = "http://mysite.org/folder1/folder2/files/".$name; 
        $sql="INSERT INTO File (fileid, messageid, link) VALUES(Null, '$lastinsertid', '$filepath')"; 
        $result=mysql_query($sql); 


      } 
      else 
      { 
        echo "Error: File ".$name." can not be uploaded to server.<br/>"; 
      } 
    } 
} 

ftp_close($conn); 




if($result){ 
header("Location: ../index.php"); 

} 
else { 
    echo $sql . ("Adding message failed <br />" . mysql_error()); 
} 
mysql_close(); 
?>