Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

JSON và tải hình ảnh lên máy chủ

Trong cách tiếp cận của tôi, tôi đã sử dụng org.apache.http.entity.mime.MultipartEntity và thêm vào tên tệp hình ảnh dưới dạng FileBody

entity.addPart("image_" + photo_count, new FileBody(
                        new File(failed.getFilenames()[i])));

sau đó chuyển MultiPartEntity cho HttpPost. Tôi chưa đăng mã đầy đủ vì nó có vô số nhận xét và mã không liên quan đến câu hỏi của bạn. Bằng cách chuyển hình ảnh dưới dạng FileBody, có thể lấy hình ảnh bằng mã xử lý tệp php đứng (Xem bên dưới).

  if ((!empty($_FILES[$im])) && ($_FILES[$im]['error'] == 0)) {
              $newname = dirname(__FILE__) . '/../photo/' . $campaign . '/' . $fn;
              if (!file_exists($newname)) {
                  if (move_uploaded_file($_FILES[$im]['tmp_name'], $newname)) {
                      //$resp = "The file " . $fn . " has been uploaded";
                      //printf("%s", $resp);
                  } else {
                    $error = $error + 1;      
                  } 
              }else{
                //image file already exists
                $error = $error + 1;
              }
          } else {
              $error = $error +1;
          }

Đối với mục đích của tôi, đoạn mã trên nằm trong một vòng lặp khi tôi xử lý nhiều hình ảnh

$im = 'image_' . $i;

đề cập đến tên của hình ảnh trong thực thể.

Xin lỗi vì bài viết ngắn, tôi gấp rút thời gian.

Quên đề cập đến lý do tại sao tôi không sử dụng phương pháp tiếp cận chuỗi Base64 là nó giới hạn kích thước của hình ảnh mà bạn có thể gửi. Cách tiếp cận FileBody trong thực thể là cách tiếp cận tốt nhất mà tôi tìm thấy.

Bạn có thể chuyển các chuỗi bằng cách sử dụng:

entity.addPart("address", new StringBody(failed[0].getAddress()));

HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 20000); // Timeout

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("address", new StringBody("my address example"));
entity.addPart("image_0", new FileBody(new File("filename of image")));

HttpPost post = new HttpPost("server address");
post.setEntity(entity);

HttpResponse response  = client.execute(post);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh tạo người dùng Mysql

  2. Truy vấn lồng nhau trong nút js bằng cách sử dụng mysql

  3. LỖI:Không thể tạo tiện ích mở rộng gốc đá quý (mysql2 trên rails 3.2.3)

  4. Lỗi ghi nhật ký mysql, phương pháp hay nhất

  5. Cập nhật truy vấn để cập nhật hàng trong MySQL