#blackberry #image-uploading
#ежевика #загрузка изображения
Вопрос:
Я новичок в разработке Blackberry, и мне нужно загрузить свое изображение из галереи устройств на сервер. Я нашел много ссылок, связанных с этим пунктом. Но я не могу найти точный результат этой проблемы. Я использовал этот пример . Используя этот пример, я получил значение в Byte[], но я не могу выполнить свои требования, используя этот код. В этом я не могу понять, какой URL-адрес мы должны передать в коде и какие параметры.
Я использовал еще один формат, я размещаю свой код здесь, используя это, я получил код ответа: 200. Но я не могу решить эту проблему
HttpConnection oCon = (HttpConnection)Connector.open("http://74.208.77.106/jm/testing/iDaddyapi.php;deviceside=true;interface=wifi");
oCon.setRequestMethod(HttpConnection.POST);
oCon.setRequestProperty("Content-Length", "" imageByte.length);
URLEncodedPostData oPostData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);
oPostData.append("api", "postidaddyimage");
oPostData.append("imagetype", "F");
oPostData.append("image", strImage);
OutputStream strmOut = oCon.openOutputStream();
strmOut.write(oPostData.getBytes());
strmOut.flush();
strmOut.close();
int rc = oCon.getResponseCode();
System.out.println("Response code.............." rc);
if (rc != HttpConnection.HTTP_OK)
throw new IOException("Error response code: " rc);
Кто-нибудь может мне помочь? Я застрял на этом.
Спасибо, Манси
Комментарии:
1. Вы проверили это — developer.nokia.com/Community/Wiki /… ?
Ответ №1:
HttpConnection conn = (HttpConnection) Connector.open(Url, Connector.READ_WRITE);
conn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH,
String.valueOf(imagedata.length));
conn.setRequestProperty("x-rim-transcode-content", "none");
ByteArrayOutputStream out = new ByteArrayOutputStream();
OutputStream finalOut = conn.openOutputStream();
String newLine = "rn";
out.write(newLine.getBytes());
out.write("--".getBytes());
out.write(boundary.getBytes());
out.write(newLine.getBytes());
String contDisp = "Content-Disposition:form-data;
name="file";filename="Image.jpg"";
String contEnc = "Content-Transfer-Encoding: binary";
String type = "Content-Type:image/jpeg";
out.write(contDisp.getBytes());
out.write(newLine.getBytes());
out.write(type.getBytes());
out.write(newLine.getBytes());
out.write(contEnc.getBytes());
out.write(newLine.getBytes());
out.write(newLine.getBytes());
out.write(imagedata);
out.write(newLine.getBytes());
out.write("--".getBytes());
out.write(boundary.getBytes());
out.write("--".getBytes());
out.write(newLine.getBytes());
finalOut.write(out.toByteArray());
out.flush();
out.close();
finalOut.flush();
finalOut.close();
Комментарии:
1. Привет, Виджай, спасибо за ваш ответ, но у меня есть один вопрос, который в этой строке «HttpConnection conn = (HttpConnection) Connector.open(Url, Connector. READ_WRITE);» какой URL мы должны передать и с какими параметрами? Вы можете видеть, что мой URL-адрес в порядке записи? И что такое граница, как мы можем ее сгенерировать? Спасибо
2. Url = » 74.208.77.106/jm / testing / … «; вы не добавляете «?» после имени веб-сервиса для передачи параметров. Теперь добавьте «?» и повторите попытку.
3. хорошо, спасибо, но как насчет границы? Откуда мы можем его сгенерировать?
4. конечная строка boundary = «Some_Unique_Text_Also_Alphanumeric»; я использую это как границу.
5. Тем не менее, я не могу загрузить изображение на URL. Можете ли вы отправить мне весь свой код? Заранее спасибо.
Ответ №2:
public class ImageUploader extends Thread {
String filename;
Bitmap temp;
public ImageUploader(String filename)
{
this.filename=filename;
}
public void run() {
final String boundary = "Some_Unique_Text_Also_Alphanumeric";
try
{
//FileInputStream fis=new FileInputStream(File.FILESYSTEM_PATRIOT,filename);
FileConnection fis=(FileConnection)Connector.open(filename);
InputStream inputStream = fis.openInputStream();
ByteArrayOutputStream bos=new ByteArrayOutputStream();
int buffersize=1024;
byte[] buffer=new byte[buffersize];
int length=0;
while((length=inputStream.read(buffer))!=-1)
{
bos.write(buffer,0,length);
}
byte[] imagedata=bos.toByteArray();
HttpConnection conn = (HttpConnection) Connector.open(URL, Connector.READ_WRITE);
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE,
HttpProtocolConstants.CONTENT_TYPE_MULTIPART_FORM_DATA
";boundary=" boundary);
conn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH,
String.valueOf(imagedata.length));
conn.setRequestProperty("x-rim-transcode-content", "none");
ByteArrayOutputStream out = new ByteArrayOutputStream();
OutputStream finalOut = conn.openOutputStream();
String newLine = "rn";
out.write(newLine.getBytes());
out.write("--".getBytes());
out.write(boundary.getBytes());
out.write(newLine.getBytes());
String contDisp = "Content-Disposition:form-data; name="file";filename="Image.jpg"";
String contEnc = "Content-Transfer-Encoding: binary";
String type = "Content-Type:image/jpeg";
out.write(contDisp.getBytes());
out.write(newLine.getBytes());
out.write(type.getBytes());
out.write(newLine.getBytes());
out.write(contEnc.getBytes());
out.write(newLine.getBytes());
out.write(newLine.getBytes());
out.write(imagedata);
out.write(newLine.getBytes());
out.write("--".getBytes());
out.write(boundary.getBytes());
out.write("--".getBytes());
out.write(newLine.getBytes());
finalOut.write(out.toByteArray());
out.flush();
out.close();
finalOut.flush();
finalOut.close();
InputStream instream=conn.openInputStream();
int ch=0;
StringBuffer buffesr=new StringBuffer();
while((ch=instream.read())!=-1)
{
buffesr.append((char)ch);
}
JSONObject myprofileObject = new JSONObject(buffesr.toString());
String result = myprofileObject.optString("result");
String url = myprofileObject.optString("url");
String message=myprofileObject.optString("msg");
MyProfile._model.setProfilePic(url);
}
catch (Exception e) {
// TODO: handle exception
}
};
thread.start();
}
}
Комментарии:
1. Я извлекаю изображение из памяти устройства, а затем загружаю это изображение.