【问题标题】:Parse file upload directly without writing to the file system直接解析文件上传,不写入文件系统
【发布时间】:2009-09-04 20:04:34
【问题描述】:

使用 Apache/PHP5,是否可以直接获取上传文件的内容而不将其写入文件系统?

在 Google 上没有太多关于此的内容,但似乎文件在上传后总是被写入临时目录。

【问题讨论】:

    标签: php apache file-upload


    【解决方案1】:

    不确定我是否理解你,但我会尽力回答。

    http://www.w3schools.com/PHP/php_file_upload.asp

    你可以在这里学到的是,每个文件都被上传到 php 的 temp 目录。然后由您的脚本将该文件移动/复制到某个永久的 Web 可访问目录,因为在脚本结束执行后,上传到 php 的临时目录的文件将被删除。

    【讨论】:

    • 你理解的没错——我只是用文件读取里面的数据,如果没有必要,我不想把文件存储在文件系统上。
    • 那么我认为除了上传文件和执行脚本之外你不需要做任何其他事情。执行后 - 文件被删除。 :)
    【解决方案2】:

    在 Linux 上,您可以在内存中创建文件系统分区。如果你能确保上传的文件写入内存中的分区,if会被存储在内存中,但就像存储在文件系统中一样,让Apache/PHP5和你都开心。

    问题在于,将文件写入内存而不是文件系统的任何解决方案都需要严格限制文件的大小和数量。通过避免写入磁盘,您会看到速度提升,但如果您使用足够的内存将其他数据推送到页面文件或交换中,您的“优化”将很快适得其反。

    【讨论】:

      【解决方案3】:

      你可以:

      <?php
      if (!empty($_FILES))
      {
          echo "<pre>";
          print_r($_FILES);
          echo file_get_contents($_FILES['file']['tmp_name']);
          echo "</pre>";
      }
      ?>
      <form id="myForm" method="post" enctype="multipart/form-data">
          <input type="file" name="file" />
          <input type="submit" value="Send" />
      </form>
      

      输出:

      Array
      (
          [file] => Array
              (
                  [name] => mytextfile.txt
                  [type] => text/plain
                  [tmp_name] => D:\PHP\wamp\tmp\php1283.tmp
                  [error] => 0
                  [size] => 1473
              )
      
      )
      My text file My text file My text file My text file My text file My text file 
      My text file My text file My text file My text file 
      My text file My text file My text file My text file My text file My text file 
      My text file My text file My text file 
      My text file My text file My text file My text file My text file 
      

      不知道是不是被一些php.ini变量限制了。

      【讨论】:

      • 从文件系统中读取文件——显然这并不能解决他的问题。
      • 我知道如何读取文件 - 我的问题是关于读取文件而不将其写入文件系统。使用您发布的内容,上传的文件将写入 D:\PHP\wamp\tmp\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 2020-02-17
      • 2018-06-15
      • 2013-03-24
      • 1970-01-01
      • 2015-07-27
      • 2023-03-09
      相关资源
      最近更新 更多