image — Загрузить файл на сервер через PHP [CodenameOne]

Я хочу загрузить image файл на сервере, потому что не найден способ загрузить файл непосредственно на сервер из CodenameOne. Я конвертирую изображение в формате Base64 и отправляю в php файл, затем в php снова декодирую изображение и пытаюсь загрузить. Но тоже не работает. Подскажите, пожалуйста, как мне решить эту проблему?

Мой код PHP:

<?php

define('UPLOAD_DIR', 'public_html/appFiles/GKQuiz/userProfilePicture/');
//$Imagecode=$_POST['Image'];//Base64 String already added in $Imagecode
$Imagecode="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";

$img=base64_decode($Imagecode);
//echo $img;
$uid=uniqid();

$ftp_server = "example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to ftp_server");
$login = ftp_login($ftp_conn, "example.com", "123");

if (ftp_put($ftp_conn, UPLOAD_DIR . $uid . ".jpg", $img, FTP_BINARY))
{
echo "Successfully uploaded";
}
else{
echo "Error uploading";
}

// close connection
ftp_close($ftp_conn);

?>

1

Решение

Я думаю, вам нужно использовать PHP: move_uploaded_file ()
Как вы видете Вот Это полный пример, надеюсь, это поможет вам.

0

Другие решения

Наконец, найденный ответ для того же, что и ниже.

Исправленный код PHP:

<?php

define('UPLOAD_DIR',$_SERVER['DOCUMENT_ROOT'].'/appFiles/GKQuiz/userProfilePicture/');

// after $_SERVER['DOCUMENT_ROOT']. your root inside public_html folder if any or '/'.

$Imagecode=$_POST['Image']; // parameter

$img=base64_decode($Imagecode);
$uid=uniqid();

$file = UPLOAD_DIR . $uid . '.jpg';
$success = file_put_contents($file, $img);

if ($success)
{
echo $uid.'.jpg';
}
else
{
echo "error";
}

?>

В CodenameOne ваш код может быть таким:

if (profilepic!=null) {
ImageIO imgIO = ImageIO.getImageIO();
ByteArrayOutputStream out = new ByteArrayOutputStream();
imgIO.save(profilepic, out, ImageIO.FORMAT_JPEG, 1);
byte[] ba = out.toByteArray();
String Imagecode = Base64.encode(ba);
//System.out.println("data :"+Imagecode);
request = new ConnectionRequest(){
@Override
protected void handleErrorResponseCode(int code, String message) {
System.out.println("Code :"+code+" Msg :"+message);
}

};
request.setPost(true);
request.setHttpMethod("POST");
request.addArgument("Image", Imagecode);
request.setUrl("http://example.com/filename.php");
NetworkManager.getInstance().addToQueueAndWait(request);
}else{
System.out.println("Unable to upload");
}
0

Кодовое имя один имеет встроенный стандартный API загрузки через поддержку HTTP-запроса многочастного запроса в MultipartRequest.

MultipartRequest легко обрабатывает двоичный файл base64 и т. д.

MultipartRequest request = new MultipartRequest();
request.setUrl(url);
request.addData("myFileName", fullPathToFile, "text/plain")
NetworkManager.getInstance().addToQueue(request);

Код Java-сервлета для перехвата должен выглядеть так:

@WebServlet(name = "UploadServlet", urlPatterns = {"/upload"})
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 100, // 10 MB
maxFileSize = 1024 * 1024 * 150, // 50 MB
maxRequestSize = 1024 * 1024 * 200)      // 100 MB
public class UploadServlet extends HttpServlet {

@Override
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Collection<Part> parts = req.getParts();
Part data = parts.iterator().next();
try(InputStream is = data.getInputStream()) {}
// store or do something with the input stream
}
}
}

Я не парень по PHP, но быстрый поиск в Google привел меня к W3C школа с этим

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
?>
0