我正在编写一个Android应用程序,将文件上传到服务器,但我想找到一种方法,如何在服务器上创建一个新文件夹,将文件上载到该文件夹。
我需要在应用程序中用程序创建文件夹,因为应用程序的每个用户都会在服务器上有自己的文件夹,该文件夹将在第一次上传文件时创建。
有人能给我一个如何做的建议吗?
到目前为止,这是我的php脚本:
<?php
$file_path = "uploads/";
$new_dir_name = $_GET['myDirectory'];
$file_path .= $new_dir_name . '/';
if (!is_dir($file_path)) {
mkdir($file_path);
chmod($file_path, 0777);
}
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "fail";
}
?>
这是我的应用程序中连接到它的代码:
//updated:
String myDirectory = "nameofNewDir";
upLoadServerUri = "myserver/upload.php"+"?myDirectory="+myDirectory;
filePathOnServer = "http://users.ecs.soton.ac.uk/du1e11/uploads/"+myDirectory+"/";
URL url = new URL(upLoadServerUri);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes("Content-Disposition: form-data; name=uploaded_file;filename= '"
+ fileName + "'" + lineEnd);
首先,您应该有一个可写的基本目录,PHP可以在其中创建子文件夹。然后在上传服务器端脚本中,使用mkdir()命令和chmod()创建并相应地设置目录的权限,然后将上传的文件移动到该文件夹。当你通过android应用程序上传文件时,文件夹将自动创建,文件将移动到那里。
以下是您特定情况的代码:
<?php
$file_path = "uploads/";
$new_name = "new_folder"; // this is the new folder you'll create
$file_path .= $new_name . '/';
mkdir($file_path);
chmod($file_path, 0777);
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "fail";
}
?>
在你的问题中,你说你不知道要创建的文件夹的名称。好吧,这应该在PHP端完成。您应该在服务器上决定要使用的文件夹名称。在您的原始代码中,没有任何内容指定文件夹,因此由您决定如何执行。