Python 调用PHP(文件)上传的问题

zhanggadi 发布于 2014/05/14 09:46
阅读 649
收藏 0
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
z
zhanggadi
我知道PHP中的$_FILES 是一个经由HTTP POST文件上传而提交至脚本的变量

当我想通过Python 脚本调用它的时候 如何把参数给传递过去?
subprocess. Popen("php -f /var/www/apkchecker/mutiple-uploader.php " + file , shell=True, stdout=subprocess.PIPE)
返回顶部
顶部