0

モバイルアプリのバックエンドである Play 1.2.4 アプリがあります。モバイル アプリから写真をアップロードし、その写真をユーザーに関連付けたいと考えています。アップロードが Play ビューから行われた場合、 Play で画像をアップロードするのがいかに簡単かを示す多くの回答を見つけました。

受信画像はmultipart/form-dataPOST リクエストとして送信されます。画像を含むフォーム フィールドは ですfile。このメソッドを作成しました:

public static void uploadProfilePicture(File image, String filename, String token) {

}

モデルには、play.db.jpa.Blobpicture というオブジェクトがあります。Fileを に変換するにはどうすればよいplay.db.jpa.Blobですか?

4

3 に答える 3

0

モデルのデータ型で BLOB を使用していません。代わりに byte[] を使用しました。データベースでは自動的に BLOB に変換されます。

私のサンプルモデルを参照できます。

package models;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import org.joda.time.DateTime;
import play.db.jpa.GenericModel;
import com.google.gson.annotations.Expose;

@Entity
public class Memorandum extends GenericModel{
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @Expose
    public String id;
    @Lob
    public String details;
    public String filename;
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
    public DateTime datePosted;
    public byte[] attachment;
    public String subject;

}

私の保存コントローラー

public static void save_memo(Memorandum memo,File attachment)
    {

        memo.datePosted = DateTime.now();

        if(attachment!=null)
        {
        memo.attachment = IO.readContent(attachment);
        memo.filename = attachment.getName();
        }

        memo.save();
        index();
    }

byte[] は、データベースでは BLOB 形式になります。

于 2013-06-10T03:23:26.537 に答える
0

これはうまくいくようです:

public static void uploadProfilePicture(File file, String name, String token) {
    User u = User.find("authToken=?1", token).first();
    try {
        InputStream is = new FileInputStream(file);
        Blob b = new Blob();
        b.set(is, "image/png");
        u.profile_picture = b;
        renderJSON("{\"status\":\"success\"}");
    } catch (FileNotFoundException fnf) {
        Logger.info("File not found when trying to upload profile picture");
        renderJSON("{\"status\":\"fail\"}");
    }
}
于 2013-06-09T16:21:08.103 に答える