package com.aiyou.bbs.bean; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.ArrayList; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.ContentBody; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import com.aiyou.bbs.utils.BBSManager; import com.aiyou.utils.JsonHelper; import com.aiyou.utils.filecache.FileManager; import com.aiyou.utils.http.HttpManager; import com.aiyou.utils.logcat.Logcat; /** * 附件元数据 * * @author sollian */ public class Attachment implements Serializable { private static final String TAG = Attachment.class.getSimpleName(); /** * */ private static final long serialVersionUID = 11117L; // 附件 private static final String API_ATTACHMENT = BBSManager.API_HEAD + "/attachment/"; // 文件列表 public File[] files = null; // 剩余空间大小 public String remain_space = null; // 剩余附件个数 public int remain_count = -1; public Attachment(String strJson) { if (strJson == null) { return; } try { JSONObject jsonObject = new JSONObject(strJson); remain_space = JsonHelper.getString(jsonObject, "remain_space"); remain_count = JsonHelper.getInt(jsonObject, "remain_count"); JSONArray jsonArray = JsonHelper.getJSONArray(jsonObject, "file"); if (null != jsonArray) { int length = jsonArray.length(); files = new File[length]; JSONObject fileObj; for (int i = 0; i < length; i++) { fileObj = (JSONObject) jsonArray.opt(i); files[i] = new File(fileObj.toString()); } } } catch (JSONException e) { e.printStackTrace(); } } /** * 上传附件 * * @param board 合法的版面名称 * @param id 文章或主题id * @param file 文件 * @return 附件信息 */ public static String sendAttachment(Context context, String board, int id, java.io.File file) { MultipartEntity mpEntity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("gb2312")); // 文件传输,注意编码!!!!!否则文件名会乱码 ContentBody cbFile = new FileBody(file); mpEntity.addPart("file", cbFile); return HttpManager.getInstance(context).postHttp(context, API_ATTACHMENT + board + "/add/" + id + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY, mpEntity); } /** * 获取附件信息 * * @param board 合法的版面名称 * @param id 文章或主题id * @return 用户空间/文章附件元数据 */ public static String getAttachments(Context context, String board, int id) { return HttpManager.getInstance(context).getHttp(context, API_ATTACHMENT + board + "/" + id + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY); } /** * 删除附件 * * @param board 合法的版面名称 * @param id 文章或主题id * @param attachName 附件名 * @return */ public static String deleteAttachment(Context context, String board, int id, String attachName) { ArrayList<BasicNameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("name", attachName)); // 封装请求参数的实体对象 UrlEncodedFormEntity entity = null; try { entity = new UrlEncodedFormEntity(params, "utf-8"); } catch (UnsupportedEncodingException e) { Logcat.e(TAG, "deleteAttachment UnsupportedEncodingException"); } return HttpManager.getInstance(context).postHttp(context, API_ATTACHMENT + board + "/delete/" + id + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY, entity); } /** * 附件中包含的文件类 * * @author 守宪 */ public class File implements Serializable { /** * */ private static final long serialVersionUID = 11118L; // 文件名 public String name = null; // 文件链接,在用户空间的文件,该值为空 public String url = null; // 文件大小 public String size = null; // 宽度为120px的缩略图,用户空间的文件,该值为空,附件为图片格式(jpg,png,gif)存在 public String thumbnail_small = null; // 宽度为240px的缩略图,用户空间的文件,该值为空,附件为图片格式(jpg,png,gif)存在 public String thumbnail_middle = null; public File(String strJson) { if (strJson == null) { return; } try { JSONObject jsonObject = new JSONObject(strJson); name = JsonHelper.getString(jsonObject, "name"); url = JsonHelper.getString(jsonObject, "url"); size = JsonHelper.getString(jsonObject, "size"); thumbnail_small = JsonHelper.getString(jsonObject, "thumbnail_small"); thumbnail_middle = JsonHelper.getString(jsonObject, "thumbnail_middle"); if (!FileManager.isImage(name)) { url = url .replace("api.byr.cn/attachment", "bbs.byr.cn/att"); thumbnail_small = thumbnail_small.replace( "api.byr.cn/attachment", "bbs.byr.cn/att"); thumbnail_small = thumbnail_small.replace( "api.byr.cn/attachment", "bbs.byr.cn/att"); } } catch (JSONException e) { e.printStackTrace(); } } } }