gpt4 book ai didi

javascript - CSV 上传不起作用

转载 作者:行者123 更新时间:2023-12-02 17:29:53 25 4
gpt4 key购买 nike

我有一个网络应用程序,允许用户上传 CSV。我已经在最新版本的 Chrome(以及其他浏览器)上对其进行了测试,并且运行良好。但是,这对于我使用完全相同版本的 Chrome 并上传完全相同的 CSV 的同事来说不起作用。唯一明显的区别是他使用的是 Windows,而我使用的是 OS X,所以我想知道这是否可以解释这种差异。我无法访问他的浏览器,因此我看不到他返回的响应。

这是网站:dailyspiro.com/WF.php

HTML 摘录:

<script type="text/javascript">
function stopUpload(success){
console.log(success);
var csv1 = success['csv1'];
var csv2 = success['csv2'];
var csv3 = success['csv3'];
var csv4 = success['csv4'];
var csvError = success['error'];
var id = success['id'];
$('.js-wf-error').text(csvError);
if (!csvError) {
runWF(id, csv1, csv2, csv3, csv4);
}
}
</script>

<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid

<form id="wf-form" class="js-wf-form" method="post" action="wf/csv-upload.php" enctype="multipart/form-data" target="upload_target">
<input type="file" name="csv1" value="" class="text ui-widget-content ui-corner-all csv-upload" />
<input type="file" name="csv2" value="" class="text ui-widget-content ui-corner-all csv-upload" />
<input type="file" name="csv3" value="" class="text ui-widget-content ui-corner-all csv-upload" />
<input type="file" name="csv4" value="" class="text ui-widget-content ui-corner-all csv-upload" />
<a href="#" onclick="$('.js-progress-bar').show(); $(this).closest('form').submit(); return false;" type="submit"class="button redButton largeButton run-wf-button">Run Walking Farm</a>
</form>

完整的 PHP 上传文件:

<?php

function generateID() {
return substr(md5(uniqid(mt_rand(), true)), 0, 6);
}

function uploadFile($csv, $id, $i) {
//$err = $_FILES[$csv]["error"];
//echo $err;
if($_FILES[$csv]["type"] != 'text/csv') {
$error = 'file number ' . $i . ' is not a valid file type.';
$path = '';
}
else {
$error = '';
$path = 'files/csv/' . $id . $i . '.csv';
move_uploaded_file($_FILES[$csv]['tmp_name'], $path);
}
$output = array($path, $error);
return $output;
}

$id = generateID();
$returnData = array();
$returnData['id'] = $id;
$returnData['error'] = '';


$i = 1;
while ($i <= 4) {
$csv = 'csv' . $i;
if(!file_exists($_FILES['csv' . $i]['tmp_name'])) {
$returnData[$csv] = '';
}
else {
$status = uploadFile($csv, $id, $i);
if ($status[1] != '') {
$returnData['error'] = $status[1];
}
else {
$returnData[$csv] = $status[0];
}
}
$i++;
}

print_r($returnData);

?>
<script language="javascript" type="text/javascript">
window.top.window.stopUpload(<?php print json_encode($returnData); ?>);
</script>

最佳答案

您不能依赖 $_FILES[$csv]["type"]text/csv。 csv 有多种 MIME 类型,因此针对其中一种类型进行验证并不是一个好主意。这些是迄今为止我上传时遇到的所有 CSV MIME 类型。我把它放在一个数组中。

$types = array(

'text/csv',
'text/plain',
'application/csv',
'text/comma-separated-values',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
'text/anytext',
'application/octet-stream',
'application/txt');

我是如何检查的:

$info = pathinfo($_FILES['filename']['tmp_name']);

if(in_array(trim($_FILES['filename']['type']), $types) || ($info['extension'] == 'csv')

关于javascript - CSV 上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23162493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com