【问题标题】:Uploaded a txt file with PHP - changing the contents before the file is uploaded?用 PHP 上传了一个 txt 文件 - 在文件上传之前更改内容?
【发布时间】:2013-02-05 02:58:58
【问题描述】:

我正在将一个 txt 文件上传到服务器,但我想先用一点 RegEx 对其进行格式化。我如何将它发送到 PHP 脚本,更改其内容,然后上传?

我从$_FILES["userinput"]["name"] 得到它的文件名,然后用file_get_contents() 保存它的内容,然后编辑它。但是现在我如何将这个编辑的字符串移动到服务器而不是原始的、未编辑的文件。

我正在考虑创建一个新的 .txt 文件并用字符串的内容填充它然后上传,但这似乎不是很有效。有没有办法只修改尝试上传的文件?

【问题讨论】:

  • 这不是“官方”上传文件的方式。以“官方”方式查看this document and example
  • 我可能误解了你的问题,但是 PHP 在服务器上运行,而不是在客户端上运行。因此,为了在文件上传之前“编辑”文件,这必须在客户端上完成。您的 PHP 页面无法做到这一点。您可以上传文件,然后对其进行修改并保存/移动/删除它。不过,同样——您不能从服务器端代码编辑客户端上的文件。
  • @mrunion 您可以使用服务器端代码很好地编辑上传的文件。
  • @Passerby 如果您要对文件进行操作,我看不出先将其读入内存然后再写入的问题。
  • 是的,我知道@Waleed。基于此引用How would I have it sent to the PHP script, change its contents, then upload it?,他想在上传之前对其进行更改。除非先上传,否则服务器端 PHP 无法做到这一点。

标签: php


【解决方案1】:

在 PHP 中上传文件之前,它会保存为临时文件,该文件包含文件的内容,当您上传文件时,它基本上会上传您的临时文件。因此,您需要做的就是更改名称为 $_FILES['userinput']['tmp_name']; 的文件的内容,当您上传时,它会抓取您修改后的临时文件并上传。
编辑文件会很容易,以下是您如何执行此操作的示例:

$filevalue = file_get_contents($_FILES['userinput']['tmp_name']);
$newfilevalue = PUT YOUR CODE HERE!
file_put_contents($_FILES['userinput']['tmp_name'], $newfilevalue);

注意:如果我有帮助,请点击绿色勾号或 1 点向上按钮!

【讨论】:

  • 不过,我将如何修改该文件的内容?
  • 我刚刚添加了您将如何进行此操作 :)
猜你喜欢
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2011-06-28
  • 2023-04-01
相关资源
最近更新 更多