Archi Forum

Archi Plug-ins => jArchi => Topic started by: Xavier Mayeur on February 22, 2019, 13:58:10 PM

Title: jArchi Uploading image to server - corrupted image
Post by: Xavier Mayeur on February 22, 2019, 13:58:10 PM
Hello,


I am struggling trying to upload a PNG image to a web site, in order to publish my architecture developed wit Archi.


The POST actually works and the the image is uploaded (HTTP return code 200).
Unfortunately, the uploaded image binary code does not match the original file.
I suspect a character set conversion issue, but I do not succeed to solve it, being a real newbie in Java Script.


Here a snippet of the code. Does it trigger some suggestion to one of you ?


Thanks


Xavier


--------------------------------------------------------------------------------------------------------------------------



function httpSendImage(method, theUrl, files,  headers) {


    method = method || 'POST';


    lineEnd = "\r\n";
    twoHyphens = "--";
    boundary = "***232404jkg4220957934FW**";
   var   existingFileName='';


    maxBufferSize = 1 * 1024 * 1024;


    // Post Client request     
    try {
        var con = new java.net.URL(theUrl).openConnection();
        con.doOutput=true;
        con.doInput=true;
        con.useCaches=false;
        con.requestMethod = method;
       
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);
      
      var filesData ='';
      if (files != undefined) {
         for (var prop in files) {
            if (prop === 'filename') {
               existingFileName = files[prop];
               fileparts = existingFileName.split("\\");
               files[prop] = fileparts[fileparts.length-1];
            }
            filesData += prop + '=\"' +  files[prop] + '\"; ';
         }
         filesData = filesData.substring(0, filesData.length-2);
        }   


        if (headers != undefined) {
            for (var prop in headers) {
                con.setRequestProperty(prop ,headers[prop]);
            }
        }


        if (authorization != null) {con.setRequestProperty("Authorization", authorization);}


        var dos = new java.io.DataOutputStream(con.outputStream);
      var buf = Java.type('byte[]');
        dos.writeBytes(twoHyphens + boundary + lineEnd);
        dos.writeBytes("Content-Disposition: form-data; name=\"file\"; " + filesData  + "\nContent-Type: image/png; charset=utf-8" + lineEnd);
        dos.writeBytes(lineEnd);


        // write bytes into form...


      buf = readFile(existingFileName);
      // console.log('buf length: ' + buf.length);
      dos.writeBytes(buf);
        // send multipart form data necesssary after file data...

        dos.writeBytes(lineEnd);
        dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

        // close streams
        dos.flush();
        dos.close();


        return asResponse(con);


    }
    catch(err) {
        console.log("Error sending file: " + err.message);
    }


}

Title: Re: jArchi Uploading image to server - corrupted image
Post by: Phil Beauvoir on February 22, 2019, 22:02:24 PM
As this is, I think, a more generalised Java/JavaScript issue you may get more help on something like Stack Overflow or similar forums. Sorry I can't help with this.