gpt4 book ai didi

java - 将图片从 Android java 应用程序上传到 Codeigniter

转载 作者:行者123 更新时间:2023-12-01 19:07:03 24 4
gpt4 key购买 nike

我和我的 friend 在将图片从 Android 应用程序上传到 PHP 中的 Codeigniter 框架时遇到了问题。问题的出现(我们认为)是因为它不是图像文件,因此不能用于图像操作。

一个重要的注意事项是,在使用 html 页面进行测试时,图像上传可以正常工作。所有其他数据(如电子邮件)均在 Android 应用程序中提供并运行。唯一不起作用的是文件上传。但它确实可以与另一个 php 文件一起使用,但我的问题是如何获取最后一个有效的 php 脚本并将其转换为 codeigniter?我想为此使用该框架,但到目前为止我们还无法做到。

这是上传的java代码->

HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost("http://url.com/controller-name");

try
{
CustomMultiPartEntity multipartContent = new CustomMultiPartEntity(new ProgressListener()
{
@Override
public void transferred(long num)
{
publishProgress((int) ((num / (float) totalSize) * 100));
}
});

// We use FileBody to transfer an image
multipartContent.addPart("userfile", new FileBody(new File(filename)));
totalSize = multipartContent.getContentLength();
multipartContent.addPart("email", new StringBody("email@email.com"));
multipartContent.addPart("submit", new StringBody("upload"));

// Send it
httpPost.setEntity(multipartContent);
HttpResponse response = httpClient.execute(httpPost, httpContext);
String serverResponse = EntityUtils.toString(response.getEntity());

Log.i("SERVER", "Response: " + response.toString());
return serverResponse;
}

catch (Exception e)
{
System.out.println(e);
}

codeigniter上传方法:

function do_upload() {
$image_name = time() . $this->get_random_string();
$config = array(
'file_name' => $image_name,
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path

);
$this->load->library('upload', $config);
$this->upload->do_upload();
$image_data = $this->upload->data();
$config = array(
'source_image' => $image_data['full_path'],
'new_image' => $this->gallery_path . '/thumbs',
'maintain_ratio' => false,
'width' => 300,
'height' => 300
);

$this->load->library('image_lib', $config);
$this->image_lib->resize();
echo $this->image_lib->display_errors();

$image_name = $image_name . $image_data['file_ext'];
//Insert into the database
$data = array(
'image_name' => $image_name,
'upload_email' => $this->input->post('email'),
'ip' => $this->input->ip_address()
);

// Insert the new data of the image!
$insert = $this->db->insert('table', $data);
$short_url = $this->alphaID($this->db->insert_id());

return $short_url;

}

旧的 php 脚本可以工作,请注意,注释的代码不起作用。因为它可能会产生与 CI 相同的效果。

<?php
/*if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "application/octet-stream")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{*/
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

if (file_exists("images/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"images/" . $_FILES["file"]["name"]);
echo "Stored in: " . "images/" . $_FILES["file"]["name"];
}
}
/*}
else
{
echo "Invalid file";
}*/
?>

请帮助我们修改 CI 函数或 java 代码,以便我们可以上传我们喜爱的图像。感谢您的建议和更好的智慧!

最佳答案

答案就在 java 代码中。我需要向文件体添加更多参数。

  multipartContent.addPart("userfile", new FileBody(new File(filename), filename, "image/jpeg", "utf-8"));

这可以完美地工作。您可以在这里找到有关 filebody 构造函数的信息:http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/content/FileBody.html

关于java - 将图片从 Android java 应用程序上传到 Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com