首页 文章

通过PHP [CodenameOne]在服务器上上传文件

提问于
浏览
1

我想在服务器上上传 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="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABAAEADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDY8lY42kchUUZZmOAB6k1bS2OelY2v3NzNaWA0+4his71CWuJB8pUgbRk9AQxPrxxWx4U/tC70x/7RuLe6uUnaMyW6ADtwQOAeemBxj6ns+uxdR0+xzvDNU1U7lpLY8cVZS29q0YrUHoOKuR2Y9Kt1zJQMpLb2qylr7VqpZj0qdbTHaodYtQMlbX2qUWvtWqLYCneQBUOsUoHn9jpOjz3EFnb2kf2GGx2rFztDpIyknPUg7hk5PJ55rjddspre/uoYFkgsQxU+VcHD71GQyd8hSCDkYVc9ePTILCzitVktkaMlTgh2z8zFjzn+8Sa4bxS0NpnfcRxbyDiR/vEd+TyRn9fevncLV/fp23R71enei12OH034g3UL6RqF2IrifTbhk2vHw0bqQzGTG4P1/vbickfIN30VYXlrfWqXNtMksT5wyMCMg4I47gggjsQa+Q/EGnrp2qPFGgWFlDIu7PGMeueoNdr4O+Jd7o1p5NyJrzZDHBGJZ9qxohbaqgKT0bGT6AdAMepNTXwnlRUXufSyMo7ipQ6e1eKW3xghkvGikjEcbzgRSOxUCIryW2hvmBB44ByM4wTXQQ/ELTZ2VYr+NmY4Vc8t9B3/AArHmq9jZUodz0vzUHemtPGO4rzg+PLH7Obj7YhiH8SnOfYY6/hUMvjq0WBZvO3RtgBh6k9D6fj0o/fdilTp9zIu/iFYReHntbO926p5e2NGt5Dtxjcfu4+Vdx5446dj5ZrGuvqWqy3Vy6SrcSgssYIG3oMAj0A6n+uMS1vfJws4DRsSSQ3P06/T/wCv0qOWQSgthUYEYGDkjAH48Afn3qKWEjCWppUxLlHQ0ba+S41TddbWiMTRIrD7obOBznpk4z04qXV/LaOCS2tYYkZQWKYBOFx0BwOhPuTnuKwIJzDchwSjoQc59Dn+Yq6dQeeEq5ZpDxknGB0Pbk9Ofr17bypy51JMxjUjyOMhFnQqVIPYf8B9P5fTApkdxCsqGSNmQcMpbjHOcemAeOvI9OKqIzEuoI4HApvmMcruJ9MdK3sY3NmDVp7cNDBOPKGSCFBH4bh0/wA9eat/8JGXbc9lGdpyBHI6hvrknP8An61zzMCQ6oUGOhPX9PSgMUG3GP8AdIz9atTktmQ4piJxjcRkdD6Uu4rhmJJxtyTjt0xTTlifkOM4yOSMf/WpYbeSbaiEhXbGSOOlTexSV9hyyRliXAOO2euOlXBbzWQWVANyqDyOmcj8Dz2qSytbeNA7yp5/AAyQF5zuyO449e/oM22t/tjeY7PsG1c5w20A5wMjJ6DNYyq2fkbRpXXmZsTxxCUM6uzpnGM4+h9ec+nHrUNxDLFKEVzIwAJw3cjPH+NT3FtMYGvImxAcLgvlj6ZHfp9Pl9qqCdo4niJJJYZ59M/4mtE77GTVtx5uY1EexPLdBgkHduOTyCenYfhmpYxHJIFEgaPJPGQW9BgDOTjjsMj3quwWVUJUbjxwep9sf1pjQyKgbDFV49h1/wD11VhXP//Z";

$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);

?>

3 回答

  • 0

    我想你需要使用PHP: move_uploaded_file()正如你所看到的here是一个完整的例子,希望它对你有帮助 .

  • 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

    Codename One具有内置标准上载API,支持MultipartRequest中的多部分请求HTTP标准 .

    MultipartRequest无缝处理二进制base64等 .

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

    拦截它的Java servlet代码应如下所示:

    @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的人,但快速谷歌搜索让我在w3c school与此

    <?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;
        }
    }
    ?>
    

相关问题