【问题标题】:plupload filename to database problems将文件名添加到数据库问题
【发布时间】:2011-09-17 19:08:19
【问题描述】:

我在尝试使用 Plupload 保存上传文件的文件名时遇到问题。这是 Plupload 部分:

echo<<<_END
  <div id="container">
    <div id="filelist">No runtime found.</div>
    <br />
    <a id="pickfiles" href="javascript:;">[Select file]</a> 
    <a id="uploadfiles" href="javascript:;">[Upload it]</a>
  </div>

  <script type="text/javascript"> 
  // Custom example logic
    function $(id) {
      return document.getElementById(id);
    }

  var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',browse_button : 'pickfiles',container: 'container',max_file_size : '1mb',
    url : 'upload.php',
    resize : {width : 320, height : 240, quality : 90},
    flash_swf_url : 'plupload/js/plupload.flash.swf',
    silverlight_xap_url : 'plupload/js/plupload.silverlight.xap',
    filters : [{title : "Image files", extensions : "jpg,jpeg,gif,png"}]
  });

  uploader.bind('Init', function(up, params) {
    $('filelist').innerHTML = "<div>Current runtime: " + params.runtime + "</div>"; 
  });

  uploader.bind('FilesAdded', function(up, files) {
    for (var i in files) {
      $('filelist').innerHTML += '<div id="' + files[i].id + '">' + files[i].name     + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';
    }});

  uploader.bind('UploadProgress', function(up, file) {
    $(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%    </span>";
  });

  $('uploadfiles').onclick = function() {
    uploader.start();
    return false;
  };

  uploader.init();
</script>
_END;

但我不知道如何将文件名插入到我的数据库中:

$post_img = file??

$topicid = mysql_insert_id();
$sql = "INSERT INTO
    posts(post_content,
    post_date,
    post_topic,
    post_by,
    post_img
  )
  VALUES
  (
    '" . mysql_real_escape_string($_POST['post_content']) . "',
    NOW(),
    " . $topicid . ",
    " . $_SESSION['userid'] . ",
    " . $post_img . " )";
  $result = mysql_query($sql);

  if(!$result) {
    //something went wrong, display the error
    echo 'An error occured while inserting your post. Please try again later.<br /><br />' . mysql_error();
    $sql = "ROLLBACK;";
    $result = mysql_query($sql);
  }

我收到错误消息“插入您的帖子时发生错误。请稍后再试'

【问题讨论】:

  • mysql_error() 或 mysql_errno() 返回什么?
  • 列数与第 1 行的值数不匹配。我将值更改为 $_FILES['$fileName'],但仍然是同样的问题。谢谢
  • 但是无论如何,如果我从插入中取出 post_img,请创建一个变量 $post_img = $_FILES['$fileName'];和 echo $post_img 稍后,它没有给出任何输出:-/
  • 首先,为什么 $topicid = mysql_insert_id();那里?那么您是否将 $_FILES['tmp_name'] 移动到另一个文件夹并为其命名?
  • Mr Book Of Zeus,有两个查询来保存数据——一个用于主题(基本上是标题、类别和 cmets 的数量),另一个用于实际帖子(此处显示的那个) .另一方面,我对 JavaScript 非常陌生,我不确定移动 $_FILES['tmp_name'] 是什么意思。我应该设置 $_FILES['images/'] 吗?

标签: plupload sql-insert


【解决方案1】:

我将 mysql 查询放入 upload.php 文件中。 我不太确定该文件应该放在哪里,但我猜它在 upload.php 文件末尾的“检查文件是否已上传”部分。

if (!$chunks || $chunk == $chunks - 1) {

// Strip the temp .part suffix off 
rename("{$filePath}.part", $filePath);

    //your mysql query here**************************
}

我认为它可能在这里的原因是因为它会检查上传文件中是否还有任何块。如果它没有任何剩余,则您在 if 语句中。 upload.php 在每个上传的文件上运行foreach,因此您只需将$fileName 放入数据库。

它对我有用。希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多