我有一个非常简单的PHP代码将文件上传到远程服务器; 我这样做的方式(正如其他一些解决方案中所建议的那样)是使用cUrl上传文件.
这是我的代码:
$ch = curl_init("http://www.remotesite.com/upload.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileupload' => '@'.$_FILES['Filedata']['tmp_name']));
echo curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)
服务器正在运行PHP 5.5.0,看来,@filename已经在PHP> = 5.5.0被弃用陈述这里下CURLOPT_POSTFIELDS的说明,因此,我得到这个错误:
Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in ...
Run Code Online (Sandbox Code Playgroud)
有趣的是,除了基本的类概述之外,php.net上的这个类绝对没有任何意义.没有示例,没有方法或属性的描述.这里基本上是空白的.我知道这是一个全新的课程,几乎没有文档和很少的实际使用,这就是为什么几乎没有任何相关性出现在谷歌搜索或此类Stackoverflow上.
我想知道是否有人使用过这个CURLFile类,可以帮助我或者给我一个例子,在我的代码中使用它代替@filename.
编辑:
我想添加我的"upload.php"代码; 此代码适用于传统的@filename方法,但不再使用CURLFile类代码:
$folder = "try/";
$path = $folder . basename( $_FILES['file']['tmp_name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
echo "The file ". basename( $_FILES['file']['tmp_name']). " has been uploaded";
}
Run Code Online (Sandbox Code Playgroud)
最终编辑: …
我正在努力比较(比较)2 个大型 CSV 文件。
例如:
文件1
a,b,c,d
e,f,g,h
i,j,k,l
Run Code Online (Sandbox Code Playgroud)
文件2
a,b,c,d
i,j,k,l
e,f,g,h
Run Code Online (Sandbox Code Playgroud)
上面应该通过比较,即使行的顺序不同,内容也是相同的。
如果内容不同、列值不匹配或者某一行存在于另一行中,等等,则比较应该失败。
我遇到的最大问题是文件非常大,并且没有可排序的键列。文件有 14 到 3000 万行,大约 10 到 15 列。未排序的原始数据转储约为 1GB 的 csv 文件。
现在我正在尝试使用下面的代码对文件进行排序和“比较”。问题是“排序”并不总是有效。对于较小的文件和较少的行,排序和比较可以工作,但它似乎不适用于非常大的文件。
此外,排序会显着增加操作时间;理想情况下,我想避免排序,只是比较忽略排序顺序,但我不知道该怎么做。
filecmm、difflib 和我尝试过的其他一些函数都需要预先排序的文件。
我现在正在执行 Python 合并排序,但正如我所说,排序不一定适用于大量行,我希望有更好的比较方法。
这是Python的归并排序函数:
def batch_sort(self, input, output, key=None, buffer_size=32000, tempdirs=None):
if isinstance(tempdirs, str):
tempdirs = tempdirs.split(",")
if tempdirs is None:
tempdirs = []
if not tempdirs:
tempdirs.append(gettempdir())
chunks = []
try:
with open(input,'rb',64*1024) as input_file:
input_iterator = iter(input_file)
for tempdir in cycle(tempdirs):
current_chunk = list(islice(input_iterator,buffer_size)) …Run Code Online (Sandbox Code Playgroud)