免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4469 | 回复: 1
打印 上一主题 下一主题

Python 调用PHP(上传文件) 出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-13 17:57 |只看该作者 |倒序浏览
本帖最后由 zhanggadi 于 2014-05-13 18:00 编辑

Mod_python 已安装 运行正常

我想做的事情

  • 有一个静态的HTML文件, 可以让用户选择需要上传的文件
  • 有一个现成的PHP文件 用来上传文件到服务器端 (测试没问题)
  • 我这里还有一个Python文件 用来做后续的处理


我想通过HTML的submit button 去调用Python脚本, 然后Python脚本再去调用该PHP脚本

目前存在的问题就是 当通过Python 调用PHP的时候 弹出一下错误
TypeError: cannot concatenate 'str' and 'instance' objects

看一下我的Code
HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <table align="center">
                <tr>
                        <td colspan="2" style="background-collor: #99bbbb;">
                                <h1 align="center">APK Checker</h1></td>
                </tr>
        </table>
<form action="./apkchecker.py/apkchecker" method="post"
        enctype="multipart/form-data">
        <fieldset>
                <legend>Upload the application</legend>
                <p>
                        Application: <input type="file" name="file" accept="" size="150" />
                </p>
                <br />
        </fieldset>
        </br>
        <input type="submit" value="Apk-Checker">
</form>

</head>
<body>

</body>
</html>

PHP的代码:
<?php

$file_path="upload/";

if(is_dir($file_path)!=TRUE) mkdir($file_path,0664) ;
//............
$ext_arr = array("apk","APK");

if (empty($_FILES) === false) {

    if($_FILES["file"]["error"] > 0){
        exit("File Upload Failed".$_FILES["file"]["error"]);
    }

    //.......
    $temp_arr = explode(".", $_FILES["file"]["name"]);
    $file_ext = array_pop($temp_arr);
    $file_ext = trim($file_ext);
    $file_ext = strtolower($file_ext);

    if (in_array($file_ext, $ext_arr) === false) {
        exit("The extension of uploaded file is disallow");
    }
    $new_name = $_FILES["file"]["name"].".".$file_ext;
    move_uploaded_file($_FILES["file"]["tmp_name"],"$file_path" . $new_name);
    echo  "Application upload Success<br />";
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    exit;
} else {
    echo "Please upload the correct application";
}
?>


Python的code
import subprocess

def apkchecker (req, file):
    uploader = subprocess. Popen("php -f /var/www/apkchecker/mutiple-uploader.php " +file, shell=True, stdout=subprocess.PIPE)
    uploader.wait()
    uploaderfile = uploader.stdout.read()
    return uploaderfile

论坛徽章:
0
2 [报告]
发表于 2014-05-13 17:59 |只看该作者
我知道PHP中的$_FILES 是一个经由HTTP POST文件上传而提交至脚本的变量

当我想通过Python 脚本调用它的时候 如何把参数给传递过去?
subprocess. Popen("php -f /var/www/apkchecker/mutiple-uploader.php " +file, shell=True, stdout=subprocess.PIPE)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP