【问题标题】:Can I attach data gathered by a form to a file that is being uploaded?我可以将表单收集的数据附加到正在上传的文件中吗?
【发布时间】:2010-04-15 14:31:24
【问题描述】:

我需要客户将文件上传到我的网站,我想收集他们的姓名或公司名称并将其附加到文件名或在服务器上创建一个文件夹,以该名称作为名称,以便我们可以保持文件井井有条。使用PHP上传文件

PHP:>>

if(isset($_POST['submit'])){
    $target = "upload/";
    $file_name = $_FILES['file']['name'];
    $tmp_dir = $_FILES ['file']['tmp_name'];

    try{
    if(!preg_match('/(jpe?g|psd|ai|eps|zip|rar|tif?f|pdf)$/i', $file_name))
        {
        throw new Exception("Wrong File Type");
        exit;
        }
        move_uploaded_file($tmp_dir, $target . $file_name);
        $status = true;
        }

    catch (Exception $e)
        {
        $fail = true;
        }
}

其他 PHPw/form:>>

<form enctype="multipart/form-data" action="" method="post">
        input type="hidden" name="MAX_FILE_SIZE" value="1073741824" />
            label for="file">Choose File to Upload </label> <br />input name="file" type="file" id="file" size="50" maxlength="50" /><br />
            input type="submit" name="submit" value="Upload" />

php
    if(isset($status)) {
        $yay = "alert-success";
    echo "<div class=\"$yay\">
    <br/>
    <h2>Thank You!</h2>
    <p>File Upload Successful!</p></div>";
    }
    if(isset($fail)) {
        $boo = "alert-error";
    echo "<div class=\"$boo\">
    <br/>
    <h2>Sorry...</h2>
    <p>There was a problem uploading the file.</p><br/><p>Please make sure that you are trying to upload a file that is less than 50mb and an acceptable file type.</p></div>";
    }

【问题讨论】:

  • 我想他想在随便浏览上传目录的同时,也能知道什么文件属于哪个客户。
  • 是的,这就是我想要的,我对 php 很陌生,只是想开始,所以我还不知道简单的事情,更多的是前端设计师。

标签: php forms file-upload


【解决方案1】:

查看mkdir(),假设用户 PHP 正在以具有适当权限的身份运行,您可以简单地在uploads/ 内创建一个目录。

之后,您可以修改$file_name 以包含您提到的一些其他已发布变量,您将添加这些变量。请注意确保这些变量只包含预期的字符。

【讨论】:

    【解决方案2】:

    您的客户在上传之前是否需要登录您的网站?如果是这种情况,也许您可​​以存储/获取有关其公司和名称的 $_SESSION 信息。然后,您可以将该信息附加到 $file_name 或 $target 目录。

    下面的 mkdir() 想法看起来可能会起作用,但是您是否考虑过如果用户输入其他人的姓名、使用其他人的姓名或进入其他人的公司会发生什么?

    【讨论】:

    • 不,没有登录,mkdir() 可以获取表单数据并将其用作名称吗?如果客户使用另一个名字,那么这是他们的损失。他们没有理由这样做,他们只会上传艺术文件进行打印。
    【解决方案3】:

    在页面顶部使用此代码

    $path = dirname( __FILE__ );
    $slash = '/';
    
    (stristr( $path, $slash )) ? '' : $slash = '\\';
    define( 'BASE_DIR', $path . $slash );
    

    &在if下面exit;}之后使用下面的代码

    $folder  = $file_name;            // folder name
    $dirPath = BASE_DIR . $folder;   // folder path
    
    $target = @mkdir( $dirPath, 0777 ); 
    
    move_uploaded_file($tmp_dir, $target . $file_name);
    

    这是你的代码

    【讨论】:

      【解决方案4】:

      我想通了,我只是输入了名称 ant 并将其附加到文件名。

      【讨论】:

      • 请选择一个正确的答案,这对以后有帮助,否则人们不会回复你的问题,因为你不会有任何接受%
      猜你喜欢
      • 2021-10-11
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2016-04-27
      相关资源
      最近更新 更多