使用Android将照片上传到PHP的服务器文件夹中
我想将照片保存在服务器中,但保存在其他文件夹中。该文件夹的结构是:使用Android将照片上传到PHP的服务器文件夹中
---main folder
|
---uploadphoto.php
|
---photos (folder)
|
--$email (folder)
当用户寄存器,I创建一个文件夹与权限0777的用户名,该文件夹是成功创建。
当我尝试上传用户文件夹内的照片,它不起作用,但如果我改变路径来保存文件,它完美的作品。这意味着在用户文件夹之外的文件夹“照片”中。
这是我的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);
这完美的作品,但当我把变量$电子邮件与相同的名称不起作用。
应用程序的一部分是这样的:
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);
变化:
$ruta = "photos/". $email . basename($_FILES['fotoUp']['name']);
到
$ruta = "photos/$email/".basename($_FILES['fotoUp']['name']);
好像有一个斜杠在用户名“$ email”和文件名之间缺失。所以你基本上是存储这样的:
时
$email = "[email protected]";
然后
$ruta = "/photos/[email protected]";
所以添加 “/”。在鲁塔变量至极$电子邮件后,将使它像这样:
$ruta = "photos/". $email . "/" . basename($_FILES['fotoUp']['name']);
附:尽量避免CHMOD 0777,这会造成严重的安全漏洞。尝试使用644代替(使用PHP作为与虚拟主机UID相同的用户运行)
它不起作用。照片保存在/ photos文件夹中,而不是/ photos/$ email文件夹。我可以尝试使用电子邮件“1234”并将它发送到PHP文件,但它不保存在正确的文件夹中。 这是我现在的档案: $ email =“$ _POST ['email']”; $ ruta =“照片/”。 $电子邮件。 “/”。 basename($ _FILES ['fotoUp'] ['name']);如果(move_uploaded_file($ _ FILES ['fotoUp'] ['tmp_name'],$ ruta)) chmod($ ruta。basename($ _FILES ['fotoUp'] ['name']),0644); – CapAm
通过将文件名硬编码到$ ruta来测试,来检查创建的目录是否可写。确保它可以正常工作,然后通过在您的代理码中回显$ ruta来检查您是否粘贴了错误的名称。另外,您将fotoUP名称var添加到$ ruta两次。只需使用chmod($ ruta,0644); (但这不是这里的主要问题) – RoyB
我检查了第一个PHP文件来创建文件夹和权限。我创建了777权限,但是当我输入我的服务器时,这个文件夹没有su权限,这就是问题所在。 >>> 如何更改创建文件夹的方式以获取正确保存照片的所有权限。 – CapAm
什么是用户文件夹名称,来自$ user还是$ email – meda
是的是$ email,对于错误感到抱歉。 – CapAm
我的服务器位于Ubuntu服务器上,但我尝试使用不带@的电子邮件,因为我必须知道如何将照片保存到文件夹中。 – CapAm