亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

{"errcode":41005,"errmsg":"media data missing hint: [vhZCFA0310e541]"}

?public static String update(String fileUrl,String accesstoken,String type) throws IOException{

//創建一個文件file

File file = new File(fileUrl);

//判斷file文件是否為空

if(file==null){

? ? ? ? ? ? ? throw new IOException("文件不存在");

}

@SuppressWarnings("unused")

String url = MESSAGE_FILE_URL.replace("ACCESS_TOKEN", accesstoken).replace("ACCESS_TOKEN",TYPE);

URL urlobj = new URL(url);

urlobj.openStream();

//httpURLConnection實例的作用是用來做一個請求但潛在網絡連接到HTTP服務器

HttpURLConnection urlconnection = (HttpURLConnection) urlobj.openConnection();

//進行urconnection對象設置

urlconnection.setRequestMethod("POST");

urlconnection.setDoInput(true);

urlconnection.setDoOutput(true);

urlconnection.setUseCaches(false);

//設置請求頭信息

urlconnection.setRequestProperty("Connetion", "Keep-Aliec");

urlconnection.setRequestProperty("Charset", "UTF-8");

//設置邊界

//currentTimeMillis方法獲取當前時間信息

String BOUNDARY = "-----------"+System.currentTimeMillis();

//Content-Type,內容類型一般是指網頁中存在的Content-Type,用于定義網絡文件的類型和網頁的編碼

//multipart/from-data請求文件上傳類型

urlconnection.setRequestProperty("Content-Type","multipart/from-data;boundary="+BOUNDARY);

StringBuilder sb = new StringBuilder();

sb.append("--");

sb.append(BOUNDARY);

sb.append("\r\n");

//Content-Disposition就是當用戶請求所得內容存為一個文件的提供一個默認的文件名

sb.append("Content-Disposition:from-data;name=\"file\";filename=\""+file.getName()+"\"\r\n");

//application.octet-stream 只能提交二進制,而且提交一個二進制,如果提交文件的話,只能提交一個文件

//后臺接收參數只能有一個,而且還只能是流或者是字節碼

sb.append("Content-Type;application/octet-stream\r\n\r\n");

//創建一個byte數組

? ? ? ? //sb對象數據轉換成字節碼

byte[] head = sb.toString().getBytes("utf-8");

//獲取輸出流 ? getoutputStream作用就是返回使用此連接的流

//OutputStream 該抽象類是所有類的字節輸出流的父類

//DataOutputStream 創建一個新的數據輸出流,以便將數據寫入指定的基礎輸出流,返回為零

OutputStream output = new DataOutputStream(urlconnection.getOutputStream());

//在將字節碼數據轉入到流對象中

output.write(head);

//文件正文部分

//把文件一流文件的方式 推入url中

//DateinputStream的作用就是file目錄的文件以流的方式輸入進來

DataInputStream in = new DataInputStream(new FileInputStream(file));

int bytes = 0;

byte []b = new byte[1024];

while((bytes=in.read(b))!=-1){

output.write(b, 0, bytes);

}

//關閉輸入流

in.close();

//結尾部分

byte []foot = ("\r\n=="+BOUNDARY+"==\r\n").getBytes("utf-8"); //定義最后數據分割線

//把定義最后的數據分割線字節碼數據轉入流對象中

output.write(foot);

//刷新

output.flush();

//關閉

output.close();

StringBuffer buffer = new StringBuffer();

BufferedReader reader = null;

String result = null;

try {

//定義一個BufferRader輸入流來讀取url的響應

reader = new BufferedReader(new InputStreamReader(urlconnection.getInputStream()));

System.out.println(urlconnection.getInputStream());

String line = null;

//while循環讀取文字

while((line=reader.readLine())!=null){

buffer.append(line);

}

if(result == null){

result = buffer.toString();

}

} catch (IOException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

}finally{

//關閉流

? ? ? ? ? ? if(reader!=null){

? ? ? ? ? ? reader.close();

? ? ? ? ? ? System.out.println("關閉");

? ? ? ? ? ? }

}

JSONObject jsonobject = JSONObject.fromObject(result);

System.out.println(jsonobject.toString());

String mediaid = jsonobject.getString("media_id");

return mediaid;

}

?AccessToken accesstoken = WeiXinUtil.initaccessToken();?

? System.out.println(accesstoken.getAccesstoken());

? System.out.println(accesstoken.getExpiresin());

? String url = "E:\\Photshop\\PS練習圖片\\cbcfe277b0079c38dfa3b27c8ee36d88.jpg";

? try {

String message = WeiXinUtil.update(url, accesstoken.getAccesstoken(), "type");

? ?System.out.println(message);

? } catch (IOException e) {

e.printStackTrace();

}


正在回答

11 回答

41005缺少多媒體文件數據

錯誤出處:String message = WeiXinUtil.update(url, accesstoken.getAccesstoken(), "type");

這里的"type"寫錯了應該寫你所要上傳的圖片的格式,因為你上傳的是圖片,所以應該是"image"


??

0 回復 有任何疑惑可以回復我~
#1

畫畫3967669 提問者

還是有錯
2017-08-02 回復 有任何疑惑可以回復我~

byte []foot = ("\r\n=="+BOUNDARY+"==\r\n").getBytes("utf-8"); //定義最后數據分割線

== 換 --

0 回復 有任何疑惑可以回復我~

有解決的嘛,同樣是這問題


1 回復 有任何疑惑可以回復我~
#1

dongzhichaogeek

byte []foot = ("\r\n=="+BOUNDARY+"==\r\n").getBytes("utf-8"); //定義最后數據分割線 == 換 --
2019-10-15 回復 有任何疑惑可以回復我~

解決辦法:因為php版本的原因,上傳素材一直保錯。php的curl的curl_setopt 函數存在版本差異

php5.5已經把通過@加文件路徑上傳文件的方式給放入到Deprecated中了。php5.6默認是不支持這種方式了

特殊處理1:curl_setopt ( $ch,?CURLOPT_SAFE_UPLOAD,?false);

特殊處理2:$post_data ['media'] ?= '@'.$file;


1 回復 有任何疑惑可以回復我~
#1

亂想瞎干

感謝大神,好使
2017-11-30 回復 有任何疑惑可以回復我~

public static String update(String fileUrl,String accesstoken,String type) throws IOException{

//創建一個文件file

File file = new File(fileUrl);

//判斷file文件是否為空

if(file==null) ? throw new IOException("文件不存在");

String url = UPLOAD_URL.replace("ACCESS_TOKEN", accesstoken).replace("TYPE",type);

URL urlobj = new URL(url);

urlobj.openStream();

//httpURLConnection實例的作用是用來做一個請求但潛在網絡連接到HTTP服務器

HttpURLConnection urlconnection = (HttpURLConnection) urlobj.openConnection();

//進行urconnection對象設置

urlconnection.setRequestMethod("POST");

urlconnection.setDoInput(true);

urlconnection.setDoOutput(true);

urlconnection.setUseCaches(false);

//設置請求頭信息

urlconnection.setRequestProperty("Connection", "Keep-Alive");

urlconnection.setRequestProperty("Charset", "UTF-8");

//設置邊界

//currentTimeMillis方法獲取當前時間信息

String BOUNDARY = "-----------"+System.currentTimeMillis();

//Content-Type,內容類型一般是指網頁中存在的Content-Type,用于定義網絡文件的類型和網頁的編碼

//multipart/from-data請求文件上傳類型

urlconnection.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);

StringBuilder sb = new StringBuilder();

sb.append("--");

sb.append(BOUNDARY);

sb.append("\r\n");

//Content-Disposition就是當用戶請求所得內容存為一個文件的提供一個默認的文件名

sb.append("Content-Disposition:form-data;name=\"file\";filename=\""+file.getName()+"\"\r\n");

//application.octet-stream 只能提交二進制,而且提交一個二進制,如果提交文件的話,只能提交一個文件

//后臺接收參數只能有一個,而且還只能是流或者是字節碼

sb.append("Content-Type:application/octet-stream\r\n\r\n");

//創建一個byte數組

? ? ? ?//sb對象數據轉換成字節碼

byte[] head = sb.toString().getBytes("utf-8");

//獲取輸出流 ? getoutputStream作用就是返回使用此連接的流

//OutputStream 該抽象類是所有類的字節輸出流的父類

//DataOutputStream 創建一個新的數據輸出流,以便將數據寫入指定的基礎輸出流,返回為零

OutputStream output = new DataOutputStream(urlconnection.getOutputStream());

//在將字節碼數據轉入到流對象中

output.write(head);

//文件正文部分

//把文件一流文件的方式 推入url中

//DateinputStream的作用就是file目錄的文件以流的方式輸入進來

DataInputStream in = new DataInputStream(new FileInputStream(file));

int bytes = 0;

byte [] b = new byte[1024];

while((bytes=in.read(b))!=-1){

output.write(b, 0, bytes);

}

//關閉輸入流

in.close();

//結尾部分

byte []foot = ("\r\n--"+BOUNDARY+"--\r\n").getBytes("utf-8"); //定義最后數據分割線

//把定義最后的數據分割線字節碼數據轉入流對象中

output.write(foot);

//刷新

output.flush();

//關閉

output.close();

StringBuffer buffer = new StringBuffer();

BufferedReader reader = null;

String result = null;

try {

//定義一個BufferRader輸入流來讀取url的響應

reader = new BufferedReader(new InputStreamReader(urlconnection.getInputStream()));

System.out.println(urlconnection.getInputStream());

String line = null;

//while循環讀取文字

while((line=reader.readLine())!=null){

buffer.append(line);

}

if(result == null){

result = buffer.toString();

}

} catch (IOException e) {

? ?e.printStackTrace();

}finally{

//關閉流

? ? ? ? ? ? if(reader!=null){

? ? ? ? ? ? reader.close();

? ? ? ? ? ? System.out.println("關閉");

? ? ? ? ? ? }

}

JSONObject jsonobject = JSONObject.fromObject(result);

System.out.println(jsonobject.toString());

String mediaid = jsonobject.getString("media_id");

return mediaid;

}


1 回復 有任何疑惑可以回復我~

有人解決的,出來分享下啊


0 回復 有任何疑惑可以回復我~

urlconnection.setRequestProperty("Connetion", "Keep-Aliec")寫錯了,Keep-Aliec改為Keep-Alive

0 回復 有任何疑惑可以回復我~

我也是這個錯誤,各位有解決嗎?

0 回復 有任何疑惑可以回復我~

你好,你現在這個問題解決了沒有呢

0 回復 有任何疑惑可以回復我~

我也是這個問題,題主解決了嗎?

0 回復 有任何疑惑可以回復我~
首頁上一頁12下一頁尾頁

舉報

0/150
提交
取消

{"errcode":41005,"errmsg":"media data missing hint: [vhZCFA0310e541]"}

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號