我在ASP.NET MVC中遇到了php脚本的问题。 我已经部署到azure服务并且已经检查过PHP已经启用了。
php脚本(upload.php)是:
<?php
if(move_uploaded_file ($_FILES['file'] ['tmp_name'], "Content/{$_FILES['file'] ['name']}")) {
echo "Programme file uploaded successfully. You will be redirected to the content rater in a few seconds..";
header("refresh:3; url=Home/Index");
exit;
}
else {
echo "XML file not uploaded successfully. Unexpected error.";
header("refresh:3; url=Home/Index");
exit;
}?>
我正在尝试将文件上传到默认创建的文件夹(在visual studio中)'内容'。我尝试输入该位置(并且都失败了):
我的表格如下:
<form action="/Scripts/php/upload.php" method="post" enctype="multipart/form-data">
<label>Select file:</label>
<input type="file" name="file">
<br /><br />
<input type="submit" class="btn btn-success" value="Upload">
</form>
无论发生什么事,我总是接受失败的消息。
我认为我的脚本可能有误,所以我尝试了W3Schools(图片上传示例)中的脚本,但总是失败。
经过一番研究后,似乎无法上传到Azure上自己的网络目录 - 这是真的吗?
如果是这样,我有哪些选择?
我还必须使用php,因为我正在尝试完成的任务。
答案 0 :(得分:0)
稍微调整一下你的代码后,我得到了一些有效的东西!
这应该可以完美地为您改变$target_dir
。我在我的网站上对此进行了测试。我遇到了与你提供的PHP代码相同的问题,这使我相信azure没有阻止任何类型的上传。
值得做一些检查,例如文件类型,文件大小以及文件是否已存在以确保安全性。
如果您仍然遇到问题,请使用var_dump($_FILES);
,因为它只是打印出变量,这将显示您是否真正获得了该文件。
<?php
$target_dir = "Content/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
if(isset($_POST["submit"]))
{
if (move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) {
// Success
print "Received {$_FILES['file']['name']} - its size is {$_FILES['file']['size']}";
} else {
// Failed
print "Upload failed!";
var_dump($_FILES);
}
}
?>