- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从Android手机向Servlet发送音频文件。我已经浏览了很多网站,但没有得到适当的解决方案。谁能帮我。从Android向服务器发送音频文件的方式有几种。
最佳答案
HttpRequestWithEntity.java
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
public class HttpRequestWithEntity extends HttpEntityEnclosingRequestBase {
private String method;
public HttpRequestWithEntity(String url, String method) {
if (method == null || (method != null && method.isEmpty())) {
this.method = HttpMethod.GET;
} else {
this.method = method;
}
try {
setURI(new URI(url));
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
@Override
public String getMethod() {
return this.method;
}
}
public static class UploadPhoto extends AsyncTask<String, Void, InputStream> {
private static final String TAG = "UploadImage";
byte[] buffer;
byte[] data;
//private long dataLength = 0;
private INotifyProgressBar iNotifyProgressBar;
private int user_id;
private IAddNewItemOnGridView mAddNewItemOnGridView;
public UploadPhoto(INotifyProgressBar iNotifyProgressBar,
IAddNewItemOnGridView mAddNewItemOnGridView, int user_id) {
this.iNotifyProgressBar = iNotifyProgressBar;
this.user_id = user_id;
this.mAddNewItemOnGridView = mAddNewItemOnGridView;
}
@Override
protected InputStream doInBackground(String... names) {
File mFile = null;
FileBody mBody = null;
File dcimDir = null;
try {
String fileName = names[0];
dcimDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
mFile = new File(dcimDir, Def.PHOTO_TEMP_DIR + fileName);
if (!mFile.isFile()) {
iNotifyProgressBar.notify(0, UploadStatus.FAILED);
return null;
}
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(Def.BASE_URL
+ String.format("/%d/list", this.user_id));
final int maxBufferSize = 10 * 1024;
mBody = new FileBody(mFile, fileName, "image/jpeg", "UTF-8"){
int bytesRead, bytesAvailable, bufferSize;
InputStream mInputStream = super.getInputStream();
int dataLength = mInputStream.available();
@Override
public void writeTo(OutputStream out) throws IOException {
bytesAvailable = mInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = mInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
out.write(buffer, 0, bufferSize);
bytesAvailable = mInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = mInputStream.read(buffer, 0, bufferSize);
int progress = (int) (100 - ((bytesAvailable * 1.0) / dataLength) * 100);
Log.d(TAG, "Result: " + progress + "%");
if (progress == 100) {
iNotifyProgressBar.notify(progress, UploadStatus.SUCCESS);
} else {
iNotifyProgressBar.notify(progress, UploadStatus.UPLOADING);
}
}
}
@Override
protected void finalize() throws Throwable {
super.finalize();
if (mInputStream != null) {
mInputStream.close();
}
}
};
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("photo", mBody);
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
InputStream mInputStream = response.getEntity().getContent();
return mInputStream == null ? null : mInputStream;
} catch (IOException e) {
Log.e(TAG, "Error causes during upload image: " + e.getMessage());
e.printStackTrace();
iNotifyProgressBar.notify(0, UploadStatus.FAILED);
} finally {
Log.v(TAG, "Close file");
if (mFile != null) {
mFile = null;
}
if (mBody != null) {
mBody = null;
}
if (dcimDir != null) {
dcimDir = null;
}
}
return null;
}
@Override
protected void onPostExecute(InputStream result) {
if (result == null) {
iNotifyProgressBar.notify(0, UploadStatus.FAILED);
} else {
PhotoInfo mPhotoInfo = ApiUtils.convertStreamToPhotoInfo(result);
if (mAddNewItemOnGridView != null && mPhotoInfo != null) {
mAddNewItemOnGridView.notifyAdded(mPhotoInfo);
Log.d(TAG, "Upload completed!!");
} else {
Log.d(TAG, "Upload is failed!!");
iNotifyProgressBar.notify(0, UploadStatus.FAILED);
}
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
}
package jp.co.bits.cpa.controller;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
@ParentPackage(value="json-default")
@Namespace("/api/users/{user_id}")
@Result(
name=MyAction.GETDATA, type="json",
params={
"excludeNullProperties", "true",
"excludeProperties", "list.*\\.owner_id"
})
public class ListController implements Status, MyAction { //ModelDriven<Object>,
private static int STATUS = REQUEST_INVALID;
private File file;
private String contentType;
private String filename;
private String contentDisposition = "inline";
private String user_id;
private String sort; // asc || desc
private String type; // thumbnail || full
private String photo_id;
private PhotoHandler photoHandler = new PhotoHandler();
private HttpServletRequest request = ServletActionContext.getRequest();
private InputStream fileInputStream;
private String photoUrl;
private List<Photo> list = new ArrayList<Photo>();
private Photo photo;
@Actions(
value={
@Action(results={
@Result(name=SUCCESS, type="stream",
params={
"contentType", "image/jpeg",
"inputName", "fileInputStream",
"contentDisposition", "filename=\"photo.jpg\"",
"bufferSize", "1024",
"allowCaching", "false"
}),
@Result(name=UPLOAD, type="json", params={
"excludeNullProperties", "true",
"allowCaching", "false",
"excludeProperties", "contentType,photoFilename"
})
})
}
)
public HttpHeaders execute() throws FileNotFoundException {
HttpMethod method = HttpMethod.valueOf(request.getMethod());
String action = GETDATA;
switch (method) {
case GET: {
System.out.println("GET...");
if (this.sort != null && this.type == null) {
System.out.println(this.user_id);
STATUS = photoList();
} else if (this.type != null){
STATUS = download();
if (STATUS == CREATED) {
fileInputStream = new FileInputStream(new File(photoUrl));
if (fileInputStream != null) {
System.out.println("FileInputStream: " + fileInputStream.toString());
}
}
return new DefaultHttpHeaders(STATUS == CREATED ? SUCCESS : GETDATA).withStatus(STATUS);
} else {
STATUS = REQUEST_INVALID;
}
break;
}
case POST: {
System.out.println("Upload file...");
STATUS = saveFile();
System.out.println("Status: " + STATUS);
action = UPLOAD;
break;
}
default:
break;
}
System.out.println("Status: " + STATUS);
return new DefaultHttpHeaders(action).withStatus(STATUS);
}
public InputStream getFileInputStream() {
if (this.fileInputStream != null) {
return this.fileInputStream;
} else {
return null;
}
}
/**
*
* Get list photo by user_id and sort type (asc || desc)
* @return status code
*/
public int photoList() {
System.out.println("Get list...");
list.clear();
if (user_id == null || this.sort == null) {
return REQUEST_INVALID;
} else {
if (sort.equalsIgnoreCase(Def.SORT_ASC) ||
sort.equalsIgnoreCase(Def.SORT_DESC)) {
List<Photo> mPhotos = photoHandler.getList(user_id, this.sort);
if (mPhotos.size() == 0) {
return NO_PHOTO;
} else {
list.addAll(mPhotos);
return OK;
}
} else {
return REQUEST_INVALID;
}
}
}
/**
* using download image by using photo_id and type of photo (thumbnail || full)
* @return status code
*/
public int download() {
list.clear();
System.out.println("Download...");
if (type == null) {
type = Def.PHOTO_THUMBNAIL;
} else {
if (photo_id == null) {
return REQUEST_INVALID;
}
}
if (type.equalsIgnoreCase(Def.PHOTO_THUMBNAIL) ||
type.equalsIgnoreCase(Def.PHOTO_FULL)) {
String url = photoHandler.getUrl(this.photo_id, this.type);
if (url == null) {
return NO_PHOTO;
} else {
request = ServletActionContext.getRequest();
@SuppressWarnings("deprecation")
String path = request.getRealPath("/images/files/");
photoUrl = path + "/" + url;
return CREATED;
}
} else {
return REQUEST_INVALID;
}
}
/**
*
* @param pathImage
* @return true or false
*/
private boolean cropImage(String pathImage) {
Image originalImage;
BufferedImage thumbImage;
try {
originalImage = ImageIO.read(this.file);
thumbImage = Utils.makeThumbnail(originalImage, 100, 100, true);
File thumbFile = new File(pathImage);
System.out.println("Crop... " + pathImage);
return ImageIO.write(thumbImage, Def.DEFAULT_PHOTO_TYPE,
thumbFile);
} catch (Exception e) {
System.out.println("Error at CropIMAGE: " + e.getMessage());
return false;
}
}
private int saveFile() {
try {
int userId = Integer.parseInt(this.user_id); // Parse user_id can be failed
if (file != null && new UserHandler().isExisted(userId)) { // user_id always != null, please change to check user_id existed
System.out.println("Save File...");
request = ServletActionContext.getRequest();
@SuppressWarnings("deprecation")
String path = request.getRealPath("/images/files/");
System.out.println("Path-->: " + path);
System.out.println(this.filename); // Save file name to database
File fileToCreate = new File(path, this.filename);
String thumb_url = Def.THUMBNAIL_PREFIX + this.filename;
try {
FileUtils.copyFile(this.file, fileToCreate);
if (fileToCreate.isFile()) {
// int photoId = photoHandler.insertGetId(new Photo(
// Integer.parseInt(this.user_id), this.filename,
// this.filename, thumb_url));
if (cropImage(path + "/" + thumb_url)) {
this.photo = photoHandler.insertGetPhoto(new Photo(
Integer.parseInt(this.user_id), this.filename,
this.filename, thumb_url));
if (photo != null) {
return CREATED;
} else {
return REQUEST_INVALID;
}
} else {
System.out.println("Crop failed");
return REQUEST_INVALID;
}
} else {
System.out.println("create failed");
return REQUEST_INVALID;
}
} catch (IOException e) {
System.out.println("Error at Save file: " + e.getMessage());
if (fileToCreate.isFile()) { // Sometime, we upload fail but the filename or file still created.
fileToCreate.delete();
}
return REQUEST_INVALID;
}
} else {
System.out.println("File not found");
return REQUEST_INVALID;
}
} catch (Exception e) {
return REQUEST_INVALID;
}
}
public void setPhoto(File file) {
System.out.println("Set Photo File...");
this.file = file;
}
public void setPhotoContentType(String contentType) {
this.setContentType(contentType);
}
public void setPhotoFileName(String filename) {
this.filename = filename;
}
/**
*
* Get list for parse json
* @return list for parse json
*/
public List<Photo> getList() {
if (list.size() > 0) {
return list;
} else {
return null;
}
}
public String getPhotoFilename() {
if (this.filename == null) {
return null;
}
if (this.filename.isEmpty()) {
return null;
}
return this.filename;
}
public void setServletRequest(HttpServletRequest servletRequest) {
this.request = servletRequest;
}
public void setPhotoContentDisposition(String contentDisposition) {
this.setContentDisposition(contentDisposition);
}
public void setContentDisposition(String contentDisposition) {
this.contentDisposition = contentDisposition;
}
public String getContentDisposition() {
if (this.contentDisposition == null) {
return null;
}
if (this.contentDisposition.isEmpty()) {
return null;
}
if (this.contentDisposition.equals("inline")) {
return null;
}
return this.contentDisposition;
}
public String getContentType() {
if (this.contentType == null) {
return null;
}
if (this.contentType.isEmpty()) {
return null;
}
return this.contentType;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public void setSort(String sort) {
this.sort = sort.trim();
}
public void setPhoto_id(String photo_id) {
this.photo_id = photo_id.trim();
}
public void setType(String type) {
this.type = type.trim();
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public Photo getPhoto() {
return photo;
}
public void setPhoto(Photo detail) {
this.photo = detail;
}
}
关于android - 将音频文件从android发送到servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376450/
我正在使用 voip 推送通知制作 ios 应用程序。 我想从 Node js 发送 voip 推送通知,但不是很好。 我阅读了本教程 CallKit iOS Swift Tutorial for V
我编写了一个服务器,当浏览器尝试连接到某些站点时,它会检查黑名单并发回 404,但是当我调用 send() 时没有错误,但消息不会出现在网络上浏览器,除非我关闭连接? 有什么建议吗? 接受来自浏览器的
#include int main() { char c = getchar(); //EOF (ctrl + d ) while( ( c = getchar() ) != '?'
我正在尝试使用MailMessage对象通过PowerShell发送电子邮件。该脚本使用Import-CSV来使用文件,然后在电子邮件正文中使用ConvertTo-HTML。由于我要发送的电子邮件客户
我需要创建一个脚本,每 30 秒对网络流量进行一次采样并存储发送/接收的字节。该数据随后用于绘制图形。我编写了一个在 Windows 2012 上完美运行的程序,但我意识到某些 cmdlet 在以前的
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
当我使用网络浏览器测试我的程序时,我可以很好地写入套接字/FD,所以我决定循环它并在连接中途切断连接,我发现了一个问题。 send() 能够在套接字不可用时关闭整个程序。我认为问题在于该程序陷入了第
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
所以我试图向自己发送数据并接收数据然后打印它,现在我已经测试了一段时间,我注意到它没有发送任何东西,事实上,也许它是,但我没有正确接收它,我需要这方面的帮助。 这就是我用来发送数据的
问题:开发人员创建自己的序列化格式有多常见?具体来说,我使用 java 本质上将对象作为一个巨大的字符串发送,并用标记来分隔变量。 我的逻辑:我选择这个是因为它几乎消除了语言依赖性(忽略java的修改
我必须在 Linux 上编写一个应用程序,该应用程序需要与具有自定义以太网类型的设备进行通信。甚至在如何编写这样的应用程序中也有很多解决方案。一个缺点是需要 root 访问权限(AFAIK)。之后释放
我有一个包含三个单选按钮选项的表单。我需要将表单数据提交到另一个文件,但由于某种原因,发送的数据包含所选单选按钮的值“on”,而不是 value 属性的值。 我尝试通过 post() 函数手动操作和发
基本上我想实现这样的目标: Process 1 Thread 1 Receive X from process 2 Thread 2 Receive Y from proces
我目前正在 Google App Engine 上开发一个系统,对它还很陌生,我正在使用 Java 平台进行开发。我在 servlet 之间发送 session 对象时遇到问题。我已经在 appeng
当我尝试将“this”(触发的元素)作为参数发送给函数时,函数收到“Object[Document build.php]”作为参数,而不是触发的元素。请让我知道我的错误: function set(a
我正在寻找让我的应用响应联系人 > 发送的魔法咒语。我希望能够接收联系人的 URI 以便检索联系人。谁有 list 过滤器/代码 fragment 吗? 最佳答案 我没有睾丸,但您可以尝试基于 ACT
关于我心爱的套接字的另一个问题。我先解释一下我的情况。之后我会告诉你是什么困扰着我。 我有一个客户端和一个服务器。这两个应用程序都是用 C++ 编写的,实现了 winsock2。连接通过 TCP 和
我看到了这篇文章 http://www.eskimo.com/~scs/cclass/int/sx5.html 但这部分让我感到困惑:如果我们已经使用 send_array 或 send_array_
我对这行代码有疑问。我必须将一个数据包带到一个端口并重新发送到接口(interface)(例如:eth0)。我的程序成功地从端口获取数据包,但是当我重新发送(使用 send())到接口(interfa
我正在尝试编写一个 X11 输入驱动程序,它可以使用我的 Android 手机上的触摸屏来移动和单击鼠标。我可以正常移动鼠标,但我无法让应用程序正确识别点击。我当前的代码位于 https://gist
我是一名优秀的程序员,十分优秀!