我知道你们中的一些人会说这不是正确的方法,但我在一个紧迫的截止日期前完成一个应用程序,截至目前我无法返回并修改代码将图像存储在目录中.
现在已经清除了
我的问题是我输入一个图像插入数据库.
(不介意类安全调用,如果数据有效,所有正在进行的操作都会进行一些检查)
$filename = $security->secure($_FILES['imgschool']['name']);
$tmpname = $security->secure($_FILES['imgschool']['tmp_name']);
$imgsize = $security->secure($_FILES['imgschool']['size']);
$imgtype = $security->secure($_FILES['imgschool']['type']);
$school = $security->secure($_POST['school']);
//begin upload
if($imgsize > 0) {
$handle = fopen($tmpname, "r");
$content = fread($handle, filesize($tmpname));
$content = addslashes($content);
//code to add all this to database
}
Run Code Online (Sandbox Code Playgroud)
变量$ content是图像,它的所有内容都是addslashes.我记得有人曾经提到过用base64做的事,但我几乎无法回想起它是如何写的.
这就是我从数据库调用图像的方式
除了所有的查询,这是调用图像的主要部分
header("Content-length: ".$imgsize);
header("Content-type: ".$imgtype);
header("Content-Disposition: attachment; filename=".$imgname);
print $row['img'];
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,而不是图像显示.网址只显示,所以在这种情况下我只看到这个
HTTP://localhost/admin/school-catalog.php页=图库&ID = 4
打开页面时,使用url中设置的正确参数查看图像.
对于那些想要查看正在进行的查询以保存图像的人等等,我复制了整个部分
//save image to db
if(isset($_POST['btnupload'])) {
$filename = $security->secure($_FILES['imgschool']['name']);
$tmpname = $security->secure($_FILES['imgschool']['tmp_name']);
$imgsize = $security->secure($_FILES['imgschool']['size']);
$imgtype = …Run Code Online (Sandbox Code Playgroud) 我的桌子上有一个blob列.如何在其中插入图像以及如何将其检索到Windows窗体上的图片框中?我正在使用visual studio IDE和VB.Net是该语言
我有一个文件/tmp/image.jpg,我想上传到BLOB字段.
我可以读它的内容file_get_contents或者我需要fread用rb(二进制)?
我的代码是:
psmnt = conn.prepareStatement("INSERT INTO upload_data(user_id,photo,audio) " + "values(?,?)");
psmnt.setLong(1, userId);
fis = new FileInputStream(photoFile);
psmnt.setBinaryStream(2, (InputStream) fis, (int) (photoFile.length()));
fisAudio = new FileInputStream(audioFile);
psmnt.setBinaryStream(3, (InputStream) fisAudio, (int) (audioFile.length()));
int s = psmnt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
该type of audio中MYSQL DB是BLOB
例外是:
java.lang.ArrayIndexOutOfBoundsException: 2
at com.mysql.jdbc.PreparedStatement.setBinaryStream(PreparedStatement.java:2089)
at com.test.dao.TestDao.saveTestDetails1(TestDAo.java:154)
at com.test.servlet.UploadImage.doPost(UploadImage.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
如何重新开始?请帮忙
var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// create container
Storage = account.CreateCloudBlobClient();
Container = Storage.GetContainerReference("container");
Container.CreateIfNotExist();
// configure for public access
var permissions = Container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
Container.SetPermissions(permissions);
...
CloudBlockBlob blob = Storage.GetBlockBlobReference(blobname);
blob.UploadFromStream(file.InputStream);
url = blob.Uri.AbsoluteUri;
//url returns: https://myazureacct.blob.core.windows.net/...
Run Code Online (Sandbox Code Playgroud)
我可以使用http:// myazureacct访问该资源....但为什么AbsoluteUri会返回https?
我的MySQL中有一个blob类型的字段,我想把数据放在这个字段中JLabel作为Icon.例如,这JLabel将是我表单中用户的个人资料图片.
我使用了这些代码,但没有任何反应,我也希望fix to width或修复我的jlabel中的任何图像大小
DefaultTableModel pic = MyDB.DataTable("SELECT `Picture` FROM `photo` WHERE `Employee ID` = 'EQ0103'");
if (pic.getRowCount() > 0){
Blob blob = pic.getBlob(1);
byte[] image1 = blob.getBytes(1, ALLBITS);
ImageIcon image = new ImageIcon(image1);
picture.setIcon(image);
getContentPane().add(picture);
setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
picture 是我的jlabel的名字
是否真的可以使用Crate Blob表上传图像.我发现这个链接(https://crate.io/docs/reference/blob.html)能够在blob表上上传文本.
同样,我希望将图像上传到包装箱Blob表.我找不到这样做的方法.有人可以帮忙吗?
谢谢,拉梅什
我基本上有完全相反的问题
似乎旧的Java Base64实用程序在返回字符串时总是每76个字符添加新行,但使用以下代码,我不会得到我需要的那些中断.
Path path = Paths.get(file);
byte[] data = Files.readAllBytes(path);
String txt= Base64.getEncoder().encodeToString(data);
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以告诉编码器添加换行符?
我已经尝试实现一个stringbuilder来插入换行符,但它最终改变了整个输出(我将文本从java控制台复制到HxD编辑器,并与我已知的工作'BLOB'与换行符进行比较).
String txt= Base64.getEncoder().encodeToString(data);
//Byte code for newline
byte b1 = 0x0D;
byte b2 = 0x0A;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < txt.length(); i++) {
if (i > 0 && (i % 76 == 0)) {
sb.append((char)b1);
sb.append((char)b2);
}
sb.append(txt.charAt(i));
}
Run Code Online (Sandbox Code Playgroud)
编辑(回答问题):
这不是最简单的解释,但是当我不使用字符串构建器时,编码的输出将如下所示:
AAAAPAog4lBVgGJrT2b + mQVicHN3d //////// 3hhcDJiLWVtMjUwLWVtMjUwLWRldjA0NTUAAAAAAA
但我希望它看起来像这样:
AAAAPAog4lBVgGJrT2b + mQVicHN3d //////// 3hhcDJiLWVtMjUwLWVtMjUwLWRldjA0NTUAAAAA..AA
如您所见,".."表示0x0D和0X0A或换行符,它在第76个字符处插入(这是旧base64输出的内容).
但是,当我在第76个字符后追加字节b1和b2(换行符)时,输出变为: …
我有一个Blob网址,例如:
blob:http://localhost:4200/06a6baa9-b7ff-4171-9dc2-a1caed35e099
Run Code Online (Sandbox Code Playgroud)
当进入
this.storage.ref('users/' + uid + '/mainPhoto').put(imageURL))
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Firebase存储:
put索引0处的无效参数:预期的Blob或文件。
我正在使用aws cli命令来修改UI.
aws cognito-idp set-ui-customization --user-pool-id us-west-2_XXXXXXX --client-id ALL --css ".submitButton-customizable{background-color: #0091e1;} " --region us-west-2 --image-file Logo.png
Run Code Online (Sandbox Code Playgroud)
但它给我一个错误,我的PNG文件无效.
我看过文档,发现图像文件应该有文件格式 Base64-encoded binary data object
我正在使用Linux Instance(Ubuntu)并从终端运行此命令.
我怎么能纠正这个?