我有一个文件:success.jpg
我想通过HTTPPOST请求发送这个文件,并将它放在服务器上的公共目录中。
我有一个简单的HTML表单和PHP处理器,如果我从浏览器上传,它可以工作:PHP.net/manual/en/features.file-upload.post-method.PHP
我试图完全放弃表单的使用,只通过POST将数据传递到URL(例如myimageserver.com/public/upload.php)
我似乎可以使用PHP函数move_uploaded_file,它甚至在这里谈到了使用POST:http://php.net/manual/en/function.move-uploaded-file.php但它没有提供可以接收和存储已经用POST上传的文件的代码。
有人做过类似的事情吗?
例如,如果你想使用移动应用程序上传,你必须通过POST发送带有mimetype或其文件扩展名的图像的base64内容,然后使用类似的东西:
- 发送base64编码和url转义的内容
- 接收内容并进行base64解码,然后进行url解码
然后在PHP中只需执行:
<?php
$base64decodedString = base64_decode(urldecode($_POST['yourInputString']));
$fileName = $_POST['fileNameString'];
file_put_contents($fileName, $base64decodedString);
这将生成一个内容为的文件
您可以阅读此示例http://www.w3schools.com/php/php_file_upload.asp
它基本上是这样做的:
<?php
$target_dir = "uploads/";
$target_dir = $target_dir . basename( $_FILES["uploadFile"]["name"]);
$uploadOk=1;
if (move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $target_dir)) {
echo "The file ". basename( $_FILES["uploadFile"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
密钥位于$_FILES全局数组上。
要在应用该示例之前检查是否存在错误,可以使用以下示例:
if ($_FILES['file']['uploadFile'] === UPLOAD_ERR_OK) {
/**
* Do the upload process mentioned above
**/
} else {
/**
* There were an error
**/
}
这是上传文件的基本HTML表单
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="myFile" />
<input type="submit" value="Send" />
</form>
如何上传您的文件?
<?php
$uploaddir = '/www/uploads/'; //physical address of uploads directory
$uploadfile = $uploaddir . basename($_FILES['myFile']['name']);
if(move_uploaded_file($_FILES['myFile']['tmp_name'], $uploadfile)){
echo "File was successfully uploaded.'n";
/* Your file is uploaded into your server and you can do what ever you want with */
}else{
echo "Possible file upload attack!'n";
}
?>
一些细节-如何获取上传目录的物理地址?只需在上传目录中创建一个索引文件并运行以下代码
<?php echo getcwd();?>
已经完成了,如果你需要更多的细节,请随时询问。
这也是最基本的方法。