java - 如何在 Android 中将音频文件上传到服务器?
问题描述
我使用Fast Android Networking library将 mp3 音频文件上传到服务器时出错。请求发送成功,但服务器响应始终为false(请注意,服务器响应只有一个布尔参数,仅当上传的文件有问题时才为 false)。我尝试使用邮递员发送具有相同文件的相同请求,并且响应是正确的!
这是我用于上传文件的代码
public static void uploadSound(final Context context, final String std_id, final String story_id, final String task_id, final File file) {
AndroidNetworking.upload(UploadSound)
.addMultipartParameter("std_id", std_id)
.addMultipartParameter("story_id", story_id)
.addMultipartParameter("task_id", task_id)
.addMultipartFile("audio_blob", file)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
Log.e("UPLOADING", "onResponse: " + response.toString());
try {
boolean booleanResponse = response.getBoolean("result");
if (booleanResponse)
Toast.makeText(context, "File uploaded successfully", Toast.LENGTH_SHORT).show();
else
Toast.makeText(context, "Unable to upload!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("Exception1", "onResponse: ", e);
Toast.makeText(context, "Unable to upload!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError error) {
Toast.makeText(context, "Something wrong!", Toast.LENGTH_SHORT).show();
Log.e("Exception1", "onResponse: ", error);
error.printStackTrace();
}
});
}
如果您需要更多信息,请告诉我。提前致谢!
解决方案
尝试使用此代码
Map<String, File> multiPartFileMap = new HashMap<>();
if (!PathHolder.equals("")) {
multiPartFileMap.put("attachment", new File(PathHolder));
}
Map<String, String> parames = new HashMap<>();
parames.put("name", name);
parames.put("email", email);
parames.put("message", details);
parames.put("subject", subject);
AndroidNetworking.upload(URLs.CONTACT)
.addMultipartFile(multiPartFileMap)
.addQueryParameter(parames)
.addHeaders(FamousFunction.getHeaders(this))
.setTag("Contact With Us")
.setPriority(Priority.HIGH)
.setExecutor(Executors.newSingleThreadExecutor())
.build()
.setUploadProgressListener((bytesUploaded, totalBytes) -> {
// do anything with progress
})
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
}
@Override
public void onError(ANError error) {
}
});
//标题
public static Map<String, String> getHeaders(Context context) {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("Accept-Language", sharedPrefrences.getLanguage(context));
headers.put("Authorization", sharedPrefrences.getApiToken(context));
return headers;
}
推荐阅读
- vba - VBA设置直方图中的箱数
- php - 如何根据数量和预定义的报价添加增量报价
- java - Java Spring - Thymeleaf 将空对象返回给控制器
- django - 如何使用 Nginx 和 django 提供媒体文件?
- ios - 通过 Cocoapods 分发 Swift 项目时使用“内部”不起作用
- c# - 如何在添加到字典之前检查密钥是否存在
- java - org.eclipse.ui.genericeditor.contentAssistProcessors 扩展点是否支持使用带有通用编辑器的 TemplateCompletionProcessor
- scala - Scala多维数组等效于np.ndarray.shape?
- apache - 如何在 Ubuntu 中使用 Apache 在一个域中组合多个 RewriteCond?
- java - Libgdx - 移动应用程序窗口时精灵的奇怪行为