我想在我的服务器中保存照片,但在其他文件夹中。该文件夹的结构是:
---main folder
|
---uploadphoto.php
|
---photos (folder)
|
--$email (folder)
当用户注册时,我使用权限为0777的用户名创建一个文件夹,并且该文件夹已成功创建。
当我尝试在用户文件夹中上传照片时,它不起作用,但是如果我更改保存文件的路径,则它可以正常工作。这意味着在用户文件夹之外的文件夹“photos”中。
这是我的PHP代码,用于将照片保存在文件夹中:
$email = $_POST['email'];
$ruta = "photos/". $email . basename( $_FILES['fotoUp']['name']);
if(move_uploaded_file($_FILES['fotoUp']['tmp_name'], $ruta))
chmod ("photos/". $email . basename( $_FILES['fotoUp']['name']), 0644);
用户名通过Android传递:
List<NameValuePair> paramsu = new ArrayList<NameValuePair>();
paramsu.add(new BasicNameValuePair("email", email));
paramsu.add(new BasicNameValuePair("path", path));
JSONObject json = jsonParser.makeHttpRequest(UPLOAD_PHOTO_URL, "POST", paramsu);
如何将照片放入文件夹?我认为这是PHP语法的问题。我在Android和可变电子邮件内容中调试了正确的PHP电子邮件。
创建文件夹的方法是注册用户。
$folderemail = $_POST['email'];
mkdir("photos/$folderemail", 0777);
chmod("photos/$folderemail", 0644);
这是我的档案:
$email = "$_POST['email']";
$ruta = "photos/". $email . "/" . basename( $_FILES['fotoUp']['name']);
if(move_uploaded_file($_FILES['fotoUp']['tmp_name'], $ruta))
chmod ($ruta . basename( $_FILES['fotoUp']['name']), 0644);
我也试过了:
$email = "$_POST['email']";
$ruta = "photos/$email/" . basename( $_FILES['fotoUp']['name']);
if(move_uploaded_file($_FILES['fotoUp']['tmp_name'], $ruta))
chmod ($ruta . basename( $_FILES['fotoUp']['name']), 0644);
和此:
//$email = "$_POST['email']";
$ruta = "photos/1234/" . basename( $_FILES['fotoUp']['name']);
if(move_uploaded_file($_FILES['fotoUp']['tmp_name'], $ruta))
chmod ($ruta . basename( $_FILES['fotoUp']['name']), 0644);
这很好用,但是当我把变量$ email用同名的名字不起作用时。
申请的部分内容如下:
List<NameValuePair> paramsu = new ArrayList<NameValuePair>();
paramsu.add(new BasicNameValuePair("email", email));
paramsu.add(new BasicNameValuePair("path", filename));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(
UPLOAD_PHOTO_URL, "POST", paramsu);
Log.i("tag", email);//DEBUG (Email that upload the photo)
Log.i返回正确的电子邮件测试“1234”。
当我在服务器中创建电子邮件文件夹时,在php中使用此命令:
$folderemail = $_POST['email'];
mkdir("photos/$folderemail", 0777);
答案 0 :(得分:0)
变化:
$ruta = "photos/". $email . basename( $_FILES['fotoUp']['name']);
到
$ruta = "photos/$email/".basename( $_FILES['fotoUp']['name']);
答案 1 :(得分:0)
似乎用户名“$ email”和文件名之间缺少斜线。所以你基本上就像这样存储它:
当
$email = "john@apple.com";
然后
$ruta = "/photos/john@apple.comfoto1.jpeg";
添加。“/”。在ruta变量中的$ email之后将会像这样:
$ruta = "photos/". $email . "/" . basename( $_FILES['fotoUp']['name']);
P.S。尽量避免使用CHMOD 0777,这会造成严重的安全漏洞。尝试使用644(使用PHP作为与虚拟主机UID相同的用户运行)