【问题标题】:How can I add an image file into json object?如何将图像文件添加到 json 对象中?
【发布时间】:2012-02-02 07:50:48
【问题描述】:

我想将图像文件添加到 json 对象中。是否可以将图像文件添加到 json 对象中?

我尝试了下面的代码,但它不起作用?因为我想将该 json 对象发送到服务器,所以服务器将读取我的图像文件并存储到该数据库中。

JSONObject test = new JSONObject();
test.put("photo",new File(// Here i set image uri));

所以当我打印这个 json 对象时,它只显示图像存储的图像路径。我想要将文件发送到服务器。

【问题讨论】:

  • 我不觉得它含糊……它很简单。他只是在问如何将这些数据添加到 json 对象中。
  • 您使用的是 Java 吗?我将如何在纯 json 文本中执行此操作?

标签: android json


【解决方案1】:

您需要将 bytesFile 读入 byte[] 并将该对象放入您的 JSONObject

您还应该看看以下帖子:

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您只是将 File 对象添加到 JSON 对象。 File 对象仅包含有关文件的元信息:路径、名称等。

    您必须加载图像并从中读取字节。然后将这些字节放入 JSON 对象中。

    【讨论】:

    • 感谢您的回复。你能给我一个简单的例子,我可以参考一下。
    • 你有没有得到一个例子或者你可以发布你的例子,我目前正在处理这个问题。
    【解决方案3】:
    public class UploadToServer extends Activity {
    
    TextView messageText;
    Button uploadButton;
    int serverResponseCode = 0;
    ProgressDialog dialog = null;
    
    String upLoadServerUri = null;
    
    /********** File Path *************/
    final String uploadFilePath = "/mnt/sdcard/";
    final String uploadFileName = "Quotes.jpg";
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload_to_server);
    
        uploadButton = (Button) findViewById(R.id.uploadButton);
        messageText = (TextView) findViewById(R.id.messageText);
    
        messageText.setText("Uploading file path :- '/mnt/sdcard/"
                + uploadFileName + "'");
    
        /************* Php script path ****************/
        upLoadServerUri = "http://192.1.1.11/hhhh/UploadToServer.php";
    
        uploadButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
    
                dialog = ProgressDialog.show(UploadToServer.this, "",
                        "Uploading file...", true);
    
                new Thread(new Runnable() {
                    public void run() {
                        runOnUiThread(new Runnable() {
                            public void run() {
                                messageText.setText("uploading started.....");
                            }
                        });
    
                        uploadFile(uploadFilePath + "" + uploadFileName);
    
                    }
                }).start();
            }
        });
    }
    
    public int uploadFile(String sourceFileUri) {
    
        String fileName = sourceFileUri;
    
        HttpURLConnection connection = null;
        DataOutputStream dos = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        File sourceFile = new File(sourceFileUri);
    
        if (!sourceFile.isFile()) {
    
            dialog.dismiss();
    
            Log.e("uploadFile", "Source File not exist :" + uploadFilePath + ""
                    + uploadFileName);
    
            runOnUiThread(new Runnable() {
                public void run() {
                    messageText.setText("Source File not exist :"
                            + uploadFilePath + "" + uploadFileName);
                }
            });
    
            return 0;
    
        } else {
            try {
    
                // open a URL connection to the Servlet
                FileInputStream fileInputStream = new FileInputStream(
                        sourceFile);
                URL url = new URL(upLoadServerUri);
    
                // Open a HTTP connection to the URL
                connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true); // Allow Inputs
                connection.setDoOutput(true); // Allow Outputs
                connection.setUseCaches(false); // Don't use a Cached Copy
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Connection", "Keep-Alive");
                connection.setRequestProperty("ENCTYPE", "multipart/form-data");
                connection.setRequestProperty("Content-Type",
                        "multipart/form-data;boundary=" + boundary);
                connection.setRequestProperty("uploaded_file", fileName);
    
                dos = new DataOutputStream(connection.getOutputStream());
    
                dos.writeBytes(twoHyphens + boundary + lineEnd);
                // dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                // + fileName + "\"" + lineEnd);
                dos.writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
                        + URLEncoder.encode(fileName, "UTF-8") + lineEnd);
    
                dos.writeBytes(lineEnd);
    
                // create a buffer of maximum size
                bytesAvailable = fileInputStream.available();
    
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                buffer = new byte[bufferSize];
    
                // read file and write it into form...
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    
                while (bytesRead > 0) {
    
                    dos.write(buffer, 0, bufferSize);
                    bytesAvailable = fileInputStream.available();
                    bufferSize = Math.min(bytesAvailable, maxBufferSize);
                    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    
                }
    
                // send multipart form data necesssary after file data...
                dos.writeBytes(lineEnd);
                dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
                // Responses from the server (code and message)
                int serverResponseCode = connection.getResponseCode();
                String serverResponseMessage = connection.getResponseMessage();
    
                Log.i("uploadFile", "HTTP Response is : "
                        + serverResponseMessage + ": " + serverResponseCode);
    
                if (serverResponseCode == 200) {
    
                    runOnUiThread(new Runnable() {
                        public void run() {
    
                            String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                    + " http://www.androidexample.com/media/uploads/"
                                    + uploadFileName;
    
                            messageText.setText(msg);
                            Toast.makeText(UploadToServer.this,
                                    "File Upload Complete.", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                }
    
                // close the streams //
                fileInputStream.close();
                dos.flush();
                dos.close();
    
            } catch (MalformedURLException ex) {
    
                dialog.dismiss();
                ex.printStackTrace();
    
                runOnUiThread(new Runnable() {
                    public void run() {
                        messageText
                                .setText("MalformedURLException Exception : check script url.");
                        Toast.makeText(UploadToServer.this,
                                "MalformedURLException", Toast.LENGTH_SHORT)
                                .show();
                    }
                });
    
                Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
            } catch (Exception e) {
    
                dialog.dismiss();
                e.printStackTrace();
    
                runOnUiThread(new Runnable() {
                    public void run() {
                        messageText.setText("Got Exception : see logcat ");
                        Toast.makeText(UploadToServer.this,
                                "Got Exception : see logcat ",
                                Toast.LENGTH_SHORT).show();
                    }
                });
                Log.e("Upload file to server Exception",
                        "Exception : " + e.getMessage(), e);
            }
            dialog.dismiss();
            return serverResponseCode;
    
        } // End else block
    }
    

    PHP 文件

    <?php
    $target_path  = "./Upload/";
    $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
    } else{
     echo "There was an error uploading the file, please try again!";
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2016-04-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多