gpt4 book ai didi

android - 从 Android 崩溃应用程序上传大视频到 PHP 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:44 26 4
gpt4 key购买 nike

我正在将大型视频上传到 php 服务器,这导致应用程序崩溃。

所以,我使用了conn.setChunkedStreamingMode(maxBufferSize);
但它给出了RESPONCE : Request Entity Too Large

服务器端视频以编码形式接受,因此我使用 Base64 进行编码。

我正在使用 JSON 网络服务上传视频

    uploadvideo(&userid,&video,&title,&description,&type)

我已经搜索了很多但找不到解决方案。谁能告诉我

http://www.coderzheaven.com/2012/03/29/uploading-audio-video-or-image-files-from-android-to-server/

http://www.mail-archive.com/android-developers@googlegroups.com/msg92856.html

哪个更好以及如何添加参数?

我用过类似 dis 的代码

try {
FileInputStream fileInputStream = new FileInputStream(myFile.getAbsolutePath()); //(new File(selectedPath) );
// open a URL connection to the Servlet
URL url = new URL(urlString);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
// Allow Inputs
conn.setDoInput(true);
// Allow Outputs
conn.setDoOutput(true);
// Don't use a cached copy.
conn.setUseCaches(false);
// Use a post method.
conn.setRequestMethod("POST");
conn.setChunkedStreamingMode(maxBufferSize);
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);

dos = new DataOutputStream( conn.getOutputStream() );
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"userid\""+ lineEnd + lineEnd);
dos.writeBytes(strUserid+lineEnd);

bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];

// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
String encodeurl = Base64.encodeBytes(buffer);

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"video\""+ lineEnd + lineEnd);
dos.writeBytes(encodeurl+lineEnd);

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"title\""+ lineEnd + lineEnd);
dos.writeBytes(strVideoName+lineEnd);

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"description\""+ lineEnd + lineEnd);
dos.writeBytes(strVideoComments+lineEnd);

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"type\""+ lineEnd + lineEnd);
dos.writeBytes(type+lineEnd);

responseMsg = conn.getResponseMessage();
// close streams
System.out.println("Debug File is written");
fileInputStream.close();
dos.flush();
dos.close();
}
catch (MalformedURLException ex)
{
System.out.println(("Debug Error: " + ex.getMessage()));
}
catch (IOException ioe)
{
System.out.println("Debug Error: " + ioe.getMessage());
}
//------------------ read the SERVER RESPONSE
try {
inStream = new DataInputStream ( conn.getInputStream() );
System.out.println("Input Stream :: "+inStream.toString());
String str;

while (( str = inStream.readLine()) != null)
{
System.out.println("Debug Server Response "+str);
}
inStream.close();

}
catch (IOException ioex){
System.out.println("Debug Error: " + ioex.getMessage());
}

最佳答案

你应该将大文件分成小部分然后尝试发送。并在服务器上加入这个小部分

关于android - 从 Android 崩溃应用程序上传大视频到 PHP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com