Good Evening, сегодня я столкнулся с странной ситуацией, когда я использовал Print Writer при загрузке файлов на сервер, файл передан, и я попытался использовать FileOutPutStream
вместо этого. решает проблемы, на мой вопрос, почему PrintWriter
делает это странное поведение, вот код, который я использовал в загрузке файла и сохранить его на сервере:Print Writer повреждает файлы, когда он используется для загрузки файлов на сервер
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
int i;
if(request instanceof MultipartWrapper){
String DestinationPath="C:\\";
MultipartWrapper request1=(MultipartWrapper)request;
File f=request1.getFile("photo");
java.io.FileInputStream fis=new java.io.FileInputStream(f);
//PrintWriter out=new PrintWriter(DestinationPath+f.getName()); causes the problem mentioned above
java.io.FileOutputStream out=new java.io.FileOutputStream(DestinationPath+f.getName());
while((i=fis.read())!=-1){
out.write(i);
}
fis.close();
out.close();
}
}
независимо от используемой кодировки, чтения байтов и записи их в виде символов будут разбиты (за исключением, может быть, однобайтовой кодировки). – jtahlborn
@jtahlborn Я не видел код на стороне сервера OP, но он может читать байты на стороне сервера, а – Miquel
серверная сторона не имеет значения. если кодировка по умолчанию на стороне клиента является многобайтовой, данные будут обработаны до того, как она покинет клиент (или если однобайтовая кодировка изменяет определенные недопустимые символы). – jtahlborn