在 PWA 中,可以使用 POST 方法使用 PHP $_FILES 获取来自 share_target in manifest.json 的文件吗?
in PWA, can file from share_target in manifest.json be fetched using PHP $_FILES using POST method?
我上次尝试 (2020) 我能够获取使用 share_target 方法上传的文件(是的,网络已经使用 A2HS 横幅安装到主屏幕),我不知道是什么我做错了,现在当我尝试使用 $_FILES['upload']['tmp_name'] 获取文件并使用 isset() 检查它时,如果 == NULL,它表明 $_FILES是空的,但是当我尝试使用我创建的表单手动上传文件时,程序运行正常
这是一些片段:
1. manifest.json
{
"name": "SchedUIe",
"short_name": "SchedUIe",
"start_url": "home.php",
"display": "standalone",
"background_color": "#454545",
"theme_color": "#454545",
"orientation": "portrait-primary",
"icons": [
{
"src": "images/logo144.png",
"type": "image/png",
"sizes": "144x144"
},
{
"src": "images/logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "images/logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"share_target":
{
"action": "decision.php",
"method": "POST",
"enctype": "multipart/form-data",
"params":
{
"title": "name",
"text": "description",
"url": "link",
"files":
[
{
"name": "upload",
"accept": [".html", ".mhtml" ,".htm"]
}
]
}
}
}
2。 decision.php
<?php
$role = '';
include_once('config_database.php');
$uploaded = $_FILES['upload']['tmp_name'];
$content = file_get_contents($uploaded);
if($uploaded == NULL)
{
echo '<script language="javascript">';
echo 'alert("Please select your file");';
echo 'window.location="home.php";';
echo '</script>';
echo "<script>window.location.href='home.php';</script>";
}
elseif(strpos($content, 'title="Ganti Role">Mahasiswa') !== false) //some string checking logic
{
$role = 'mahasiswa';
}
elseif(strpos($content, 'title="Ganti Role">Dosen') !== false) //some string checking logic
{
$role = 'dosen';
}
//Get the user name
if ($role == 'mahasiswa')
{
include_once('output_mahasiswa.php');
include_once('download_page.php');
}
elseif ($role == 'dosen')
{
include_once('output_dosen.php');
include_once('download_page.php');
}
else
{
echo '<script language="javascript">';
echo 'alert("Invalid File");';
echo 'window.location="home.php";';
echo '</script>';
exit();
}
?>
<html>
<head>
</head>
<body>
</body>
</html>
当我使用 android 的共享功能上传文件时,我总是收到“请 select 你的文件”警告,这意味着它得到了 $uploaded == NULL 条件。
我已经尝试通过在 php 中使用 $_POST 获取回显,一些测试文本使用“文本”属性,还有一些 url 使用“url”属性 来自 share_target 并且它有效,只有对我不起作用的“文件”。
所以是我的程序有什么错误还是只是 share_target 不再支持 $_FILES 方法?
我已经找到了解决方案,但我真的不知道为什么会发生这种情况,所以我使用一些第 3 方文件管理器上传了文件,它显示文件没有上传,但是当我尝试上传文件时来自 phone 的本机应用程序管理器已成功上传,我认为这是一个权限问题?我什至不知道为什么我试图从那个第 3 方文件管理器共享,而本机文件管理器已经存在
我上次尝试 (2020) 我能够获取使用 share_target 方法上传的文件(是的,网络已经使用 A2HS 横幅安装到主屏幕),我不知道是什么我做错了,现在当我尝试使用 $_FILES['upload']['tmp_name'] 获取文件并使用 isset() 检查它时,如果 == NULL,它表明 $_FILES是空的,但是当我尝试使用我创建的表单手动上传文件时,程序运行正常
这是一些片段:
1. manifest.json
{
"name": "SchedUIe",
"short_name": "SchedUIe",
"start_url": "home.php",
"display": "standalone",
"background_color": "#454545",
"theme_color": "#454545",
"orientation": "portrait-primary",
"icons": [
{
"src": "images/logo144.png",
"type": "image/png",
"sizes": "144x144"
},
{
"src": "images/logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "images/logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"share_target":
{
"action": "decision.php",
"method": "POST",
"enctype": "multipart/form-data",
"params":
{
"title": "name",
"text": "description",
"url": "link",
"files":
[
{
"name": "upload",
"accept": [".html", ".mhtml" ,".htm"]
}
]
}
}
}
2。 decision.php
<?php
$role = '';
include_once('config_database.php');
$uploaded = $_FILES['upload']['tmp_name'];
$content = file_get_contents($uploaded);
if($uploaded == NULL)
{
echo '<script language="javascript">';
echo 'alert("Please select your file");';
echo 'window.location="home.php";';
echo '</script>';
echo "<script>window.location.href='home.php';</script>";
}
elseif(strpos($content, 'title="Ganti Role">Mahasiswa') !== false) //some string checking logic
{
$role = 'mahasiswa';
}
elseif(strpos($content, 'title="Ganti Role">Dosen') !== false) //some string checking logic
{
$role = 'dosen';
}
//Get the user name
if ($role == 'mahasiswa')
{
include_once('output_mahasiswa.php');
include_once('download_page.php');
}
elseif ($role == 'dosen')
{
include_once('output_dosen.php');
include_once('download_page.php');
}
else
{
echo '<script language="javascript">';
echo 'alert("Invalid File");';
echo 'window.location="home.php";';
echo '</script>';
exit();
}
?>
<html>
<head>
</head>
<body>
</body>
</html>
当我使用 android 的共享功能上传文件时,我总是收到“请 select 你的文件”警告,这意味着它得到了 $uploaded == NULL 条件。 我已经尝试通过在 php 中使用 $_POST 获取回显,一些测试文本使用“文本”属性,还有一些 url 使用“url”属性 来自 share_target 并且它有效,只有对我不起作用的“文件”。
所以是我的程序有什么错误还是只是 share_target 不再支持 $_FILES 方法?
我已经找到了解决方案,但我真的不知道为什么会发生这种情况,所以我使用一些第 3 方文件管理器上传了文件,它显示文件没有上传,但是当我尝试上传文件时来自 phone 的本机应用程序管理器已成功上传,我认为这是一个权限问题?我什至不知道为什么我试图从那个第 3 方文件管理器共享,而本机文件管理器已经存在